PyConBrasil 2008 - Chamada de Trabalhos

Postado por Osvaldo Santana

Sabe aquele projeto bacana que você desenvolveu em Python? Sabe aquela biblioteca fantástica que você começou a usar? Sabe aquele site “Web 2.0″ que você desenvolveu no Google Apps? E aquele treinamento que você ministrou na sua escola?

Chegou a hora de você mostrar isso para toda a comunidade brasileira de desenvolvedores Python!

Estão abertas as inscrições de palestras e treinamentos para a PyConBrasil 2008 que, esse ano, irá acontecer na Universidade Veiga de Almeida no Rio de Janeiro entre os dias 18 e 20 de setembro.

O período para inscrições de palestras e treinamentos vai do dia 10 de junho até 13 de julho. O tempo é curto, por isso é melhor se apressar.

O processo é simples e sem custos: basta ir no site do evento e clicar em “Chamada de Trabalhos“. Lá você poderá cadastrar uma palestra com duração entre 30min e 1h, uma palestra-relâmpago (perfeita para demonstrar casos de uso de Python na sua empresa) com duração entre 5min e 20min ou um treinamento com duração entre 2h e 2 dias.

As palestras e treinamentos deverão falar de Python mas não precisam tratar de nenhum assunto específico.

Contamos com você no evento e com a sua ajuda na divulgação do mesmo. Conte para todos os seus amigos e colegas, divulgue em seu blog, coloque um banner no seu site, que esse evento é um dos melhores eventos técnicos que temos hoje no Brasil.


Ambiente Isolado para Python com virtualenv

Postado por Osvaldo Santana

Boa parte do meu dia-a-dia de desenvolvedor é gasto em proramando em Python. Gosto de estar sempre atualizado com o que há de novo para essa linguagem e para isso saio instalando tudo o que aparece para para experimentar. Além de Python o Linux também faz parte da minha vida e uso ele quase 100% do meu tempo (em vias de mudar para o OS X).

A plataforma Python, de uns tempos pra cá, vêm padronizando os arquivos Eggs para distribuição de aplicações e bibliotecas. Em conjunto com o PyPI (Python Package Index) e o utilitário easy_install (que é parte do framework setuptools) é possível instalar componentes Python com apenas um comando.

A facilidade para instalar esses pacotes é enorme mas removê-los é chato porque envolve a edição de alguns arquivos texto, e ter permissão de escrita no diretório de bibliotecas do Python (permissão que também é necessária para a instalar o pacote).

Cada pacote instalado acrescenta uma entrada ao sys.path do Python fazendo com que o tempo para importar um módulo aumente um pouco mais (cada uma dessas entradas é consultada em busca do módulo e se você der uma olhada na saída do strace verá que a procura por um módulo envolve vários passos).

O Linux que eu uso (Ubuntu) precisa ter um ambiente Python estável, já que grande parte de suas aplicações roda em cima dessa linguagem, ou seja, danificar esse ambiente pode atrapalhar todo o funcionamento do sistema.

Isso tudo junto com o fato de que adoro experimentar as novidades do mundo Python faziam com que meu Python ficasse totalmente poluído com versões bleeding edge de bibliotecas que muitas vezes são incompatíveis com as versões “oficialmente suportadas” pelo pessoal que faz o Ubuntu.

Seria necessário um jeito fácil de se criar ambientes isolados do Python usando como base a própria instalação do sistema para que eu pudesse fazer esses testes e experiências sem danificá-lo. Não ficar replicando cópias de Python pela máquina também seria interessante.

E então surge a solução…

Parece engraçado mas no mesmo dia que perdi horas “arrumando” o Python em meu computador eu li no blog do Ian Bicking que ele tinha desenvolvido um programinha que fazia exatamente o que eu precisava: o virtualenv.

O uso do virtualenv é extremamente simples e direto. Basta instalar, executar e ativar.

Instalação

Se você está usando Ubuntu ou Debian:

sudo apt-get install python-setuptools
sudo easy_install virtualenv

Se não está:

wget http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py

Criando o ambiente

Para criar um ambiente basta executar o virtualenv e passar como parâmetro o nome do diretório onde tal ambiente será instalado:

virtualenv meu_python

Esse comando irá criar um diretório chamado meu_python com os diretórios:

  • bin - executável do interpretador, o script easy_install e o arquivo activate que será usado para “ativar” o ambiente. Quando o ambiente está “ativo” os executáveis dos aplicativos Python são instalados aqui também.
  • lib - a árvore com links simbólicos e/ou cópias de todos os módulos e bibliotecas do Python. Quando esse ambiente está “ativo” os módulos e pacotes serão sempre instalados dentro desse diretório.
  • include - dentro desse diretório estão os links simbólicos para todos os headers do Python que são necessários para se compilar extensões escritas em C para ele.

Ativando o ambiente para usar

Para usar esse ambiente recém-criado é necessário ativá-lo. para isso basta executar o seguinte comando:

source meu_python/bin/activate

Esse comando irá adicionar o diretório meu_python/bin no PATH da sua sessão e mudar o prompt para que você possa distinguir visualmente quando este ambiente está ativo.

Atenção: O virtualenv não cria o link simbólico python -> python2.5, portanto, se precisar dele você terá que criá-lo à mão com o seguinte comando

(cd meu_python/bin; ln -s python2.5 python; hash -r)

Depois disso é só sair instalando as coisas sem a menor preocupação.

PS. Eu não testei o virtualenv no Windows nem no Mac OS X mas no site do projeto é possível notar que tem gente usando ele também nessas duas plataformas, portanto, eu acho que ele também funcione corretamente nelas.


O sistema de testes dos meus sonhos

Postado por Osvaldo Santana

O uso de testes no desenvolvimento de software já vem me acompanhando desde que trabalhei com Smalltalk na Objective Solutions. O sistema de testes que eles tinham lá chegava muito próximo do que eu idealizo para um sistema de testes.

Recentemente eu li o livro Test-Driven Development do Kent Beck e resolvi experimentar TDD de forma radical em um projeto pessoal em que estou desenvolvendo em Python. O meu sentimento geral sobre o uso de TDD é a de que estou programando num ritmo bem mais lento do que costumo ter mas com a certeza absoluta de que estou seguindo pelo caminho correto.

Como os detalhes de implementação desse projeto não estão muito claros em minha cabeça o uso de TDD está se mostrando ideal, mas não recomendo para o desenvolvimento de uma aplicação na qual você já tenha uma boa idéia de como implementar pois ela realmente ‘desacelera’ o seu ritmo. Mas atenção: estou desaconselhando o uso de TDD e não a criação de testes! Nos projetos onde é possível desenvolver testes é fundamental fazê-lo.

Mas voltando ao assunto deste post eu adoraria ver uma ferramenta para Python com as seguintes funcionalidades:

  1. Suportar testes escritos com xUnit (unittest) e doctests.
  2. Vir junto com framework xUnit mais poderoso que o unittest padrão do Python. O py.test tem umas idéias legais. Juntar outras bibliotecas auxiliares, tais como o mocker, também seria legal.
  3. Ter um sistema de discovery automático para testes (ex. nose).
  4. Ter uma interface texto para uso em servidores de testes.
  5. Ter uma interface gráfica para uso do desenvolvedor.
  6. Suportar execução distribuída de testes. Ainda não preciso disso mas estou prevendo que precisarei no futuro.
  7. Integração com algum software de lint (ex. pylint).
  8. Integração com sistemas de teste de cobertura (ex. coverage).
  9. Emitir relatório sobre a qualidade do código (baseado na análise do lint), da cobertura dos testes, do tempo de execução dos testes e, em caso de falha, o traceback do erro.
  10. Permitir a execução do pdb caso algum teste falhe.
  11. Integração com o mecanismo de persistência de objetos (ORM, OODBMS, …) para permitir a criação de savepoints (aka subtransactions) para testes que precisam construir cenários com muitos objetos. Criando esses savepoints um teste poderia fazer um rollback parcial dos objetos criados/alterados pelo teste executado anteriormente. Eu usei essa integração na Objective e garanto que era muito útil além de diminuir o tempo para execução dos testes de forma colossal.

Mockup da Tela
Modelo da interface gráfica dessa aplicação*.

Esse é o sistema dos meus sonhos e acredito que, conforme o desenvolvimento do meu projeto avance, eu acabe com algo muito parecido nas mãos. Mas se alguém quiser começar antes eu prometo que usarei e, caso me sobre tempo, ajudarei no desenvolvimento :)

Quem sabe um dia esse carinha trabalhe integrado a um SCM, ao reviewboard e a um sistema de issue tracker… mas chega de viagem, hora de voltar ao trabalho.

* Note que ainda está faltando uma Treeview para selecionar o módulo cujo código fonte será exibido.


Favoritos da Comunidade Linux 2007

Postado por Osvaldo Santana

Esse post é a versão Web de um e-mail que eu enviei para a lista de discussões da Python Brasil apenas coloquei os links (e fiz umas pequenas correções) para facilitar o acesso aos sites:

Pessoal,

O site BR-Linux lançou a pesquisa
“Favoritos da Comunidade Linux 2007″ que tenta coletar a visão dos
brasileiros sobre o universo do Linux e do Software Livre em geral.
O formulário está disponível em:

http://br-linux.org/linux/favoritos2007

A Associação Python Brasil está colaborando com a pesquisa e doou 3
kits contendo 1 livro Aprendendo Python, 1 camiseta do Plone e 1 DVD
com os vídeos das palestras das PyConBrasil 2005 e 2006 (o de 2007
ainda não saiu :)) cada.

Mas além disso podemos aproveitar a pesquisa para mostrar a força da
nossa comunidade aqui no Brasil apontando o nosso site como o
melhor site nacional, nossa lista de discussões[2] como melhor fórum
ou lista de e-mail, a PyConBrasil como melhor evento nacional, a
Associação Python Brasil na categoria grupo de usuários ou organização
livre nacional, e a linguagem Python como linguagem favorita.

Ufa, tem tanta coisa legal na nossa comunidade que permite a nossa
participação em 5 categorias diferentes! :) 

Além dessas categorias eu ainda indiquei “Aprendendo Python” como o
melhor livro.

Lembrando que nós temos mais de 2000 pessoas que assinam essa lista,
podemos obter bons resultados por lá :) 

Valeu,
Osvaldo

Espero que colocando essa mensagem aqui ela chegue às pessoas que gostam de Python mas não tem tempo de acompanhar a lista.


Curso grátis de Maemo

Postado por Osvaldo Santana

maemo_training.png

O laboratório de software (OpenBossa) do INdT, onde trabalho, está organizando treinamentos sobre a plataforma Maemo (Linux, Internet Tablets, Nokia, 770, N800, N810, …) totalmente “di grátis”.

Os treinamentos ocorrerão nos dias 20 e 21 de Novembro em Joinville, SC (na mesma SOCIESC onde tivemos a PyConBrasil 3). Nos dias 26 e 27 de Novembro o mesmo evento ocorrerá em Manaus na UFAM.


Aposentadoria da Python Brasil

Postado por Osvaldo Santana

Ontem eu me aposentei da moderação da lista de discussões Python Brasil. Quem vai assumir o meu cargo vai ser o meu ajudante Pedro Werneck. E ele, por sua vez, será ajudado pelo recém “contratado” Andrews Medina.

Ferramenta de moderaçãoO ritual de passagem da ferramenta de moderação usada na Python Brasil já foi até concluído.

Quando comecei na lista éramos 134 assinantes e estamos com 2099 agora. Antes éramos só um grupo de amigos e entusiastas. Hoje continuamos amigos e entusiastas mas também somos associados de uma organização formal que vai ter muito mais força para levar adiante os nossos projetos.

Essa aposentadoria é um dos passos rumo à minha redução de atividades na comunidade Python Brasil e de Software Livre em geral. Notem que irei reduzir consideravelmente as minhas atividades mas sempre serei um entusiasta de Python e do Software Livre em geral.

Essa decisão também tem uma relação com a chegada dos meus trinta anos de idade e tomou a sua forma final durante as minhas últimas férias.

Quero diminuir o número de coisas que faço para poder fazer melhor algumas outras coisas que andavam meio abandonadas: cuidar da família, desenvolver um projeto de software que ocupa meus pensamentos há muitos anos e fazer o meu trabalho melhorar aqui na empresa.


PyConBrasil 3 - Inscreva-se já!

Postado por Osvaldo Santana

Já está tudo pronto para a PyConBrasil 3 que vai acontecer esse ano em Joinville, SC nos dias 30, 31 de agosto e 1 de setembro na SOCIESC.

PyConBrasil 3 - Inscreva-se já!

Já batemos alguns recordes em relação ao ano passado: o número de palestras ultrapassou 50 com folga e teremos 10 treinamentos de Python durante o evento. Esse ano, pela primeira vez, tivemos que dar uma “apertada” no tempo das palestras para que todos que submeteram suas propostas pudessem participar.

A programação está no ar e lá você vai poder ver que o evento está muito bom. Também poderá fazer a sua inscrição e ajudar na divulgação e torne-se um amigo do evento.


PythonBrasil: 2012!

Postado por Osvaldo Santana

Hoje eu tirei o dia pra dar uma ajustada em algumas coisas da lista PythonBrasil que fica hospedada no Yahoo! Groups e vi uma coisa superlegal: passamos de 2000 associados.

Somos 2012 programadores Python.

Dos primeiros 10 associados da antiga python-br (que por problemas de técnicos teve que ser mudada para python-brasil) até os atuais 2012 muitas coisas aconteceram.

O grupo inicial começou tímidamente a organizar as coisas e sempre foi muito unido. Até hoje esses pioneiros ainda são amigos e a maior parte deles ainda participa da lista.

O grupo python-br surgiu em 22 de agosto de 2000 e o python-brasil que veio logo na seqüência surgiu em 25 de Junho de 2003. Já se vão mais de 7 anos na estrada. Não parece que tem todo esse tempo.

Eu me lembro quando fui convidado para ser co-moderador da python-br (pouco tempo antes dela mudar pra python-brasil) e depois quando passei a ser o moderador principal na python-brasil. Atualmente o Pedro Werneck me ajuda nessa tarefa. Também tenho planos de “passar o bastão” para outra pessoa continuar esse trabalho para dar uma “renovada” no ambiente :)
Traçando um gráfico do crescimento da comunidade a gente percebe que ele quase sempre foi linear. Nunca tivemos grandes “booms” de adesões mas a linha nunca desistiu de subir. Só recentemente tivemos um aumento maior no número de novos participantes que são, em sua maioria, estudantes de computação, seguidos por programadores PHP em busca de ferramentas melhores, e programadores Java que descobriram as belezas das linguagens que eles chamavam pejorativamente de “linguagens scripting”. Eles descobriram esse mundo graças ao Ruby (on Rails) que é uma linguagem (e um framework para desenvolvimento web) que compartilha muito das qualidades de Python.

Eu também fui o criador da primeira versão do site da comunidade. Não me lembro ao certo a data da criação, mas o registro do domínio data de 21 de outubro de 2003. Ele nasceu como um wiki e até hoje é assim que funciona. Todos podem ir lá e corrigir ou atualizar as páginas. Desta maneira temos sempre um conteúdo bem atual (sob o custo de uma certa desorganização típica dos wikis).

Além de tudo isso essa bela comunidade se organizou mais e criou recentemente a Associação Python Brasil que já está organizando a terceira edição de um evento dedicado exclusivamente à nossa querida linguagem de programação.

Muitas outras coisas ainda estão por vir já que a nossa comunidade sempre foi forte, unida e agora conta com mais de 2000 pessoas. Agora é só esperar mais e mais “milheiros” de programadores brilhantes se juntando à promoção e disseminação da cultura pythônica.

Não posso deixar de comentar que a comunidade Python é irmã das comunidades TcheZope, O TurboGears e da Django Brasil.


Bluetooth Ponto

Postado por Osvaldo Santana

Aqui no INdT a gente tem um sistema de ponto que usa uma etiqueta RFID que fica em nossos crachás para marcar a hora que a gente chega e sai do trabalho. O problema é que esse sistema não é muito confiável e eu também vivo esquecendo de passar o meu crachá na tal maquininha e isso fez com que eu tenha o maior banco de horas negativas aqui da empresa.

Cansado dessa história eu tentei vários métodos diferentes para marcar a minha chegada e saída aqui da empresa. Usei planilha, adaptei um sisteminha feito por um colega de trabalho, anotei em um caderno… e nada. As anotações estavam sempre inconsistentes e impediam que eu fizesse a conferência do meu relatório de horas e corrigir eventuais problemas.

Mas isso mudou quando li um artigo que falava sobre um programinha que executa tarefas quando um dispositivo Bluetooth específico se aproximava do computador. Eu pensei: “Eu tenho um celular com Bluetooth e tenho como colocar um dongle Bluetooth na minha estação de trabalho da empresa. Eu posso registrar a minha chegada/saída na empresa baseado na presença do meu celular, afinal ele me acompanha quando chego ou saio do trabalho…”

Mas o programinha do artigo não funciona com Linux e minha estação de trabalho é Linux então tive que desenvolver o meu próprio script Bluetooth Ponto 0.1.

O funcionamento dele é simples: Quando executado sem nenhum parâmetro ele faz discovery dos dispositivos Bluetooth nas redondezas e registra as entradas e saídas desses dispositivos desde o último discovery. Então é só colocar ele no seu crontab ($ crontab -e) para ser executado de 5 em 5 minutos:

$ crontab -l
# m h  dom mon dow   command
*/5 * * * * /path/completo/btponto.py

Esse comando irá gerar um arquivo de log para cada mês do ano dentro do diretório ~/.btponto e a partir desse arquivo a gente poderá gerar os relatórios.

Para gerar os relatórios é só criar um arquivinho de configuração com o MAC address do celular e o nome do dono:

$ cat .btponto/indt.cfg
[osantana]
bt = 00:0F:ED:ED:01:02
name = Osvaldo Santana Neto
occupation = Researcher

e roda o btponto.py da seguinte forma:

$ btponto.py -f .btponto/indt.cfg .btponto/bluetooth-200703.log
------------------------------------------------------------------------
Username: osantana
Fullname: Osvaldo Santana Neto
BT Mac:   00:0F:ED:ED:01:02

Date        In        Out
2007-03-20  14:14:00  19:10:12
2007-03-21  09:35:12  19:20:11
2007-03-22  08:55:11

Esse programinha depende do Python BlueZ. No meu Ubuntu Edgy bastou executar: sudo apt-get install python-bluez para instalá-lo.

Para você descobrir qual o MAC address do teu celular tente:

$ hcitool scan
Scanning ...
        00:0F:ED:ED:01:02       meu_celular

Ou, se o seu celular for um S60 da Nokia digite: *#2820# no teclado numérico.


Carman - Fast and Furious and Python

Postado por Osvaldo Santana

Mais prazeroso do que ter feito o porte da linguagem Python para a plataforma Maemo é ver as pessoas usando o que você fez para criar coisas legais.

banner.png

O INdT acaba de lançar o Carman, software para o Nokia 770 e pro Nokia N800 que permite exibir informações sobre o funcionamento do seu automóvel em tempo-real e que são disponibilizadas pelos adaptadores OBD-II via USB ou Bluetooth.

Para os praticantes de tuning e para aqueles que gostam de dar uma “envenenada” em seus carros esse sistema é realmente fantástico.


« Artigos anteriores