DreamPie: mais um shell com esteróides para Python

O interpretador interativo do Python é considerado por muitos desenvolvedores como um dos recursos mais interessantes da linguagem. De fato, podemos dizer que é ele quem possibilita alta produtividade ao escrever software em Python apenas com um editor de textos simples, sem depender de IDEs pesadas e complexas.

O problema é que a interface padrão (shell) do interpretador às vezes é um pouco limitada quando precisamos experimentar trechos de código ligeiramente mais longos ou intrincados. Editar uma linha submetida ao interpretador por engano pode ser um processo um tanto quanto doloroso. Para resolver esse problema, existem algumas versões alternativas do shell que agregam muito em funcionalidades e usabilidade, tais como o ipython e o bpython. Dessas duas, a que mais me impressionou foi o bpython, mas logo nas primeiras tentativas percebi que o aplicativo é um tanto quanto instável, apresentando muitos problemas ao exibir na tela o código digitado, principalmente ao tentar recuperar alguma linha do histórico. Esses bugs me fizeram deixar o bpython um pouco de lado até que aparecesse algo mais robusto.

Hoje a espera parece ter terminado. O site UbuntuGeek publicou um post divulgando o DreamPie, que promete mais estabilidade e facilidade de uso. Instalei a ferramenta e, após alguns minutos de brincadeira, posso confirmar que ela promete o que cumpre. Criada por um dos colaboradores do IDLE, ela apresenta interface limpa, fácil de configurar e de editar código do histórico de comandos. Alguns dos principais recursos do DreamPie são:

  • Submissão de código por blocos, ao invés de por linhas
  • Auto-complemento de código e de nomes de arquivos
  • Auto-complemento de parênteses
  • Integração com o matplotlib
  • Histórico dos resultados da execução dos trechos de código (output)
  • Saídas muito longas são “dobradas” (results folding), para não atrapalhar a visualização do código
  • Suporte a Python 2.5, 2.6, 2.7, Jython 2.5, IronPython 2.6 e Python 3.1
  • É software livre, licenciado pela GPL 3

dreampie

Referências

Coding Dojo Sergipe

Depois de um longo período afastado do blog — devido a algumas mudanças “tanto no pessoal, como no profissional”, como diria o filósofo moderno Fausto Silva — volto para ajudar a divulgar a ótima iniciativa dos desenvolvedores sergipanos em criar o Dojo Sergipe. Tive a oportunidade de participar de dois dos quatro dojos realizados até agora e a impressão é que o movimento está no caminho certo.

É sempre bom ter a chance de se reunir com outras pessoas motivadas e interessadas em programação, independente da linguagem. Desde que tomei conhecimento da ideia de coding dojo, percebi que se tratava de uma abordagem genial para o aprendizado de programação, uma vez que alia a prática deliberada à diversão. Isso sem falar na oportunidade de conhecer pessoas novas e trocar experiências.

Recomendo muito a todos os desenvolvedores de Aracaju e região que dêem uma passada lá na lista de discussão, se informem sobre as próximas reuniões e compareçam!

Um pouco sobre como fazer a diferença

Para quem acompanha as comunidades de desenvolvimento ágil no Brasil, o trabalho de Vinícius Teles dispensa apresentações, mas dessa vez ele se superou! Muito inspiradores os slides de sua apresentação na última edição do PythonCampus. Aliás, não é de hoje que todo o pessoal da PythOnRio, do Dojo Rio e comunidades afins vem fazendo um trabalho exemplar e digno de admiração. Eu mesmo me tornei fã dos caras. Estão todos de parabéns!

Vale compartilhar:

Começando um user group: a experiência do PUG-PE

Recentemente, surgiu uma thread da lista de discussão da comunidade Python Brasil cujo autor solicitava dicas e sugestões sobre como iniciar e movimentar um grupo de usuários local. Muitas pessoas deram sua opinião, o que me fez notar que nem todo mundo costuma divulgar seu ponto de vista sobre o assunto. Por isso, resolvi compartilhar um pouco da minha experiência com o PUG-PE, o Grupo de Usuários Python de Pernambuco. Antes de mais nada, quero deixar claro que não tenho a intenção de esgotar o assunto, até porque estamos todos em contínuo processo de aprendizado. O relato a seguir é simplesmente fruto da necessidade de documentar a iniciativa. Afinal, small acts make great revolutions!

O início

No início de julho de 2007, comecei a perceber que as pessoas interessadas em Python no Recife estavam muito isoladas, apesar de saber que havia iniciativas importantes envolvendo tanto o uso quanto o ensino da linguagem algumas instituições locais. Entrei em contato com alguns participantes da lista de discussão nacional que já haviam mencionado residir em Pernambuco, para ver se seria uma boa ideia criar uma lista de discussão e tentar reunir os usuários locais de Python em torno dela. Diante do retorno positivo, criei a lista e divulguei na comunidade Python Brasil. Em pouco tempo, começaram a surgir as solicitações de participação e no intervalo de uma semana já eram mais de 15 membros.

A primeira tentativa

A empolgação do início nos motivou a marcar rapidamente a primeira reunião presencial. Se de todos os inscritos na lista uns quatro ou cinco comparecessem, já teríamos o que comemorar. Para quebrar o gelo – afinal quase ninguém se conhecia pessoalmente – optamos por um encontro informal num restaurante do Recife, numa noite de meio de semana. Infelizmente, por uma grande coincidência, todas as outras pessoas que haviam confirmado presença tiveram contratempos de última hora e acabei indo sozinho ao “não-encontro”.

Depois de passado algum tempo, encaramos esse pequeno tropeço como um lição aprendida, que nos prepararia para o que poderia vir pela frente. Pessoalmente, entendi o episódio como uma métrica do quanto ainda precisávamos maturar a ideia do grupo de usuários. Talvez, se tudo tivesse dado certo na naquela primeira tentativa, não teríamos nenhuma experiência para relatar hoje. Decidimos dar tempo ao tempo.

Um breve hiato

Durante algum tempo, a lista de discussão se limitou a funcionar como um mural de anúncios de eventos relacionados a software livre, com um ou outro pedido de ajuda com alguma tarefa de programação em Python. De vez em quando surgiam interessados em realizar o tão sonhado encontro presencial. Sempre incentivei a todos, me colocando à disposição para o que fosse necessário, mas deixando claro que não iria tomar a iniciativa de organizar o encontro sozinho novamente. Não tinha certeza se essa seria a melhor maneira de lidar com a situação, mas na hora me parecia a única saída para evitar um novo eventual “fogo de palha”.

A retomada

O grupo continuou assim até meados de janeiro de 2010, quando o Marcel Caraciolo ingressou na lista após fazer o que eu tinha feito lá em 2007: procurar por algum grupo local de Python antes de tentar iniciar um por conta própria. Era a fagulha de iniciativa que faltava para impulsionar o funcionamento do grupo pra valer. Percebi que o catalisador trazido por Marcel era algo simples, mas extremamente importante para um grupo de usuários de tecnologia: uma rede de contatos no meio acadêmico. A partir daí, aconteceu um crescimento impressionante no número de membros da lista de discussão. A quantidade de participantes praticamente dobrou em menos de um mês, alcançando quase 100 pessoas. Chegava o momento de fazer uma nova tentativa de reunir o pessoal.

Os encontros

Com um massa crítica razoável de pessoas interessadas a atuantes, ficou mais fácil concretizar o objetivo de realizar a primeira reunião presencial. Uma ferramenta importante no processo de organização dos encontros foi o uso de enquetes para auxiliar na tomada de decisões. Com elas foi possível verificar com antecedência qual o dia da semana, horário e local que atenderia a maior parte das pessoas. Desde então, temos conseguido realizar encontros mensais em manhãs de sábado, no Centro de Informática da UFPE.

Tem sido uma experiência gratificante ver a quantidade de participantes e a qualidade dos encontros aumentar a cada mês. Na última edição, em abril de 2010, contamos com a presença de cerca de 40 pessoas, número que eu jamais poderia imaginar que pudesse ser alcançado tão rápido. Muito bom também perceber que o pessoal já começa a não mais esperar ou perguntar o que pode ser feito para ajudar: vai lá e toma a iniciativa de reservar sala para os encontros, avisar aos amigos que ainda não conhecem e assim por diante.

As lições aprendidas

Não existe receita de bolo nem fórmula mágica para iniciar um grupo de usuários. Até mesmo a experiência que tenha servido para um grupo pode não servir para outro. Os motivos para isso são os mais diversos, desde o perfil dos interessados, até as diferenças culturais de cada região. No entanto, nunca é demais registrar e compartilhar as lições aprendidas, pois pode ser o detalhe que esteja faltando para alavancar o funcionamento de um grupo.

  • Não tente promover uma reunião informal demais logo na primeira tentativa. É normal que situações muito descontraídas sejam um pouco intimidantes quando as pessoas ainda não se conhecem pessoalmente, o que é ainda pior se o grupo inicial for composto por muitos principiantes. Geralmente as pessoas com esse perfil são atraídas pela expectativa de que vão ser expostas a algum conhecimento novo, a ser transmitido por pessoas mais experientes.
  • Aproxime-se do ambiente acadêmico. Os universitários, principalmente dos períodos iniciais, costumam ser muito receptivos a novidades ou a algo que os indique um caminho a seguir, tanto na graduação, quanto na vida profissional. Além disso, a parte da logística também fica mais simples, já que o acesso a recursos e espaço físico adequados é mais fácil.
  • Tenha paciência e avance em baby steps. Introduza ideias e novidades gradualmente e aguarde um pouco para observar o feedback. Às vezes uma ideia que parece boba desperta muito mais interesse naquele determinado momento do que algo que você considere genial.
  • Aprenda a conviver com a diversidade. As pessoas têm graus de interesse diferentes por diferentes atividades. Não é porque você está disposto a despender muita energia e tempo no grupo de usuários que todos têm a obrigação de fazer o mesmo.

Ainda temos muito o que aprender e várias coisas a realizar, mas acredito que o mais difícil foi vencer a inércia. Períodos de altos e baixos virão pela frente, mas certamente estamos cada dia mais preparados para manter a cabeça fora da água.

Se você tem alguma experiência parecida ou mesmo alguma dica complementar, seria ótimo vê-la compartilhada nos comentários!

Introdução ao Google App Engine

No último encontro do PUG-PE, apresentei uma rápida introdução ao Google App Engine. A finalidade era mostrar como até mesmo desenvolvedores iniciantes podem disponibilizar uma aplicação web de forma fácil e rápida. O feedback dos presentes foi muito positivo. Fiquei bastante satisfeito em ver que muita gente correu para experimentar o App Engine assim que chegou em casa. Portanto, missão cumprida!

Download direto

Código-fonte do exemplo

Pragmatic Thinking and Learning

Pragmatic Thinking and Learning: Refactor You WetwareEm tempos de mundo interconectado e informação instantânea, uma das habilidades mais valorizadas entre profissionais de diversas áreas é a capacidade de aprendizado. Sendo assim, “aprender a aprender” deveria ser um dos primeiros objetivos de qualquer pessoa que deseja desempenho pleno, seja em sua profissão, seja em seus projetos pessoais. Pensando nisso, Andy Hunt reuniu em Pragmatic Thinking and Learning um conjunto de práticas e técnicas para refatorar nosso wetware, analogia usada pelo autor para aproximar os processos do pensamento humano de um modelo computacional.

O objetivo do livro é mostrar como fazer a transição do modo de pensar de um novato para o modo de pensar de um expert. O texto é basicamente voltado para desenvolvedores de software, mas as técnicas apresentadas são úteis para qualquer ramo de atuação. Nada mais natural, já que todos temos um cérebro que pode ter seu desempenho melhorado por meio de alguma “malhação” e meia dúzia de novos hábitos.

O caminho entre o novato e o expert

O autor cita o Modelo Dreyfus de aquisição de conhecimento para definir o mapa que deve ser trilhado para nos tornarmos experts em nossas respectivas áreas de atuação. Para chegar lá, é preciso percorrer um espectro que vai da necessidade de obediência quase cega a regras e receitas pré-definidas, em um extremo, até um modo de pensar que é fundamentalmente calcado na intuição, no outro. Além disso, a proficiência também pode ser medida em termos da capacidade de contextualizar informações e tomar decisões de acordo com cenários específicos. Nesse processo, é fundamental que o aprendizado aconteça por meio de observação e imitação, como fazem tão bem as crianças ao tomar como modelo o comportamento das pessoas que as cercam.

Conhecer seu cérebro

A comparação comum entre o cérebro humano e um computador é sedutora, mas não passa de uma metáfora. Não somos programáveis e sequer conseguimos executar a mesma ação da mesma maneira mais de uma vez. Ainda assim, para fins didáticos é conveniente imaginar o cérebro como uma CPU de núcleo duplo. Um dos núcleos por ser equiparado a uma máquina de Von Neumann, responsável pelo pensamento linear, pela lógica e pelo processamento da linguagem. O outro é mais parecido com um processador digital de sinais, responsável por busca e reconhecimento de padrões, ainda que não diretamente relacionados entre si. O primeiro é chamado de modo-L (modo linear) e o segundo de modo-R (modo “rico”).

Em linhas gerais, podemos dizer que o modo-R cuida da intuição e criatividade necessárias para resolver os problemas, enquanto que o modo-L é responsável por cuidar dos detalhes para materializar a solução. Como o modo-R é imprevisível e difícil de ser domado, é importante contar com alguma ajuda para capturar inspiração e ideias assim que elas surgem. Caderno-e-caneta, dispositivos portáteis ou cartões de anotações servem como uma espécie de armazenamento auxiliar de memória para essas ocasiões.

Recrutar o lado direito

Existem algumas técnicas que podem ser utilizadas para ajudar a conseguir mais “potência” mental. Essas técnicas envolvem o estímulo ao lado direito do cérebro (modo-R, o da intuição e criatividade) para que seja possível contar com sua ajuda para trabalhar em conjunto com o lado direito. Uma dessas técnicas consiste em tentar representar determinada ideia ou conceito usando mais sentidos que o usual. Além de descrever verbalmente a ideia, podemos tentar representá-la em forma de desenho ou através de algum modelo manipulável, tal como peças de Lego, por exemplo.

Outro recurso útil para engajar o modo-R é exercitar a criação de metáforas para facilitar a representação de conceitos abstratos ou de de difícil compreensão. Boas metáforas são valiosas e conseguir criá-las é um importante passo para a resolução de problemas complexos. Uma ferramenta para ajudar na criação de boas metáforas é cultivar o humor: pensar em trocadilhos e piadas que envolvam palavras com mais de um significado estimula o surgimento de metáforas em potencial.

Depurar a mente

Embora usar nossa intuição seja algo fantástico, às vezes ela pode nos enganar. Esses bugs no nosso modo de pensar são conhecidos como propensões cognitivas e nos fazem, muitas vezes, deixar a imparcialidade de lado ao tomar decisões. A lista de propensões cognitivas é extensa, mas vale a pena conhecer algumas se quisermos aperfeiçoar nossa capacidade de fazer escolhas de maneira clara. Outro aspecto que merece atenção é a afinidade que temos com as características comuns à nossa geração e como esses valores podem ser conflitantes ao lidar com pessoas de gerações diferentes.

Aprender deliberadamente

Nos dias de hoje, podemos considerar que nossa habilidade de aprender é um dos fatores mais importantes para determinar se nossas ações e projetos têm chance de sucesso. Neste capítulo, o autor sugere a criação de um “plano de investimentos” em aprendizado, que funcionaria de forma similar a um plano de investimentos financeiros. O plano consiste em objetivos e metas que devem ser atingidos de forma que se possa perceber seu progresso. Para tanto, podemos fazer uso de técnicas de aprendizagem que envolvem uma maneira mais efetiva de ler material escrito, sumarizar e relacionar conhecimentos e aprender ensinando.

Ganhar experiência

A experiência é o pavimento do caminho entre o iniciante e o expert em qualquer atividade. No processo de conquistar experiência, é inevitável cometer erros. Por isso, é importante incluir a falha como um elemento comum ao aprendizado. Para que isso seja possível, precisamos criar um ambiente em que possamos explorar e experimentar com liberdade e no qual tenhamos como receber feedback sobre nossos erros.

Gerenciar a concentração

A enxurrada de informações a que somos submetidos diariamente vem criando uma dificuldade inédita: não somos mais capazes de nos concentrar adequadamente ao realizar grande parte de nossas atividades. Nossa mente vive acelerada e em constante mudança de foco. Uma das técnicas sugeridas pelo autor para reduzir nosso “burburinho mental” é cultivar o hábito da meditação, cujos benefícios são comprovadamente eficazes. Além disso, também é necessário preparar nosso ambiente de trabalho de modo a evitar distrações e otimizar o contexto da atividade que estivermos realizando.

Conclusão

Pragmatic Thinking and Learning é uma daquelas obras que tem a capacidade de mudar a maneira como percebemos o mundo. Aliás, essa é uma das características das coisas que nos fazem ganhar experiência: se nada mudou em sua cabeça depois de terminar um livro, um filme, uma música ou qualquer outra atividade (um emprego, por exemplo), não dá para contar como experiência de fato. De forma simples, empolgante e bem-humorada, Andy Hunt ensina como abrir caminho para explorarmos todo nosso potencial de pensar, aprender e aplicar os resultados, germinando as sementes para a inovação e a excelência. Livro recomendadíssimo para comprar e manter por perto.

Livros livres ou gratuitos na web

Sou fã de livros impressos – ou feitos de árvores mortas, como preferem alguns – mas às vezes comprar um livro pode ser um investimento alto demais quanto o que queremos é apenas uma referência rápida para um determinado assunto. Nesses casos, existem incontáveis fontes gratuitas de conhecimento, incluindo aí os livros online ou em formato digital.

Abaixo seguem alguns livros que já me foram muito úteis, tanto como fonte de referência constante, quanto por trechos que provocam aquele chamado “estalo” e nos fazem enxegar o assunto de uma maneira completamente nova. Alguns dos livros estão disponíveis em para download em PDF, enquanto outros apenas em HTML.

Python

Projeto de Software

Métodos Ágeis

Produtividade Pessoal

  • The Pomodoro Technique, por Francesco Cirillo (pretendo falar mais sobre esta técnica em outra oportunidade!)

Ciência da Computação

Linux

Estes foram os que consegui lembrar rapidamente. A intenção é atualizar esse post à medida que for lembrando de mais livros, para servir como referência futura.

Conhece outros livros? Compartilhe as indicações nos comentários!

Como fazer apresentações eficientes

Não tem a menor paciência para apresentações, palestras, treinamentos ou assemelhados que usam aqueles slides com listas intermináveis de tópicos? Nem com aquelas com mais texto do que a Bíblia e, de quebra, com o apresentador lendo todo o conteúdo dos slides? Então, muito cuidado para não fazer o mesmo quando for a sua vez. Aprenda as principais características para montar apresentações que comunicam e dão resultado:

Link para a apresentação (via Saia do Lugar).

Verificando a versão do Django

Quando estamos usando um computador desconhecido ou simplesmente não conseguimos lembrar qual a versão do Django que está instalada, é sempre útil descobrir do jeito mais rápido possível. Para resolver o problema com uma única linha de comando no shell, temos:

$ python -c "import django; print django.get_version()"

Para aprender mais: