Python, Pygame e Nokia 770

Postado por Osvaldo Santana

Hoje eu e o Rudá fizemos o teste definitivo do Python com Pygame no Nokia 770. Testamos ele com o jogo Solarwolf que é um dos joguinhos mais completos no site do Pygame. Enquanto eu preparava ele pra rodar no 770 (eu tive que truncar a imagem que originalmente era 800×600 para que ela coubesse na tela de 800×480) eu pensei: “Isso não vai funcionar. Vai ficar lento toda a vida”.

A boa notícia: não ficou lento! :) A má notícia: O protótipo que a gente tem aqui não está com o som configurado ainda, logo, o jogo ficou mudo.


Particularmente fiquei superfeliz com o resultado. A gente já tem todos os pacotes prontinhos para rodar isso dentro do Scratchbox. Só não disponibilizamos publicamente ainda porque estamos com um probleminha que tá impedindo que a gente se conecte com nosso servidor Web.
Além desse trabalho eu estou fazendo os bindings Python para a biblioteca Hildon da plataforma Maemo. O segredo para isso é gerar uns arquivos com a extensão ‘.defs’ (com sintaxe Scheme) com as definição das APIs da biblioteca em C. Para não ficar fazendo ‘trabalho de macaco’ eu estou fazendo um gerador automático de ‘.defs’. Se funcionar direito eu acho que será útil para o pessoal que desenvolve o PyGTK também.


Precisamos nos mexer

Postado por Osvaldo Santana

Hoje eu li um e-mail na lista de discussões que foi enviado pelo Ramiro (e complementado pelo Luciano Rodriguez) que fala sobre um projeto chamado “Programa Técnico Cidadão“. Esse programa visa dar treinamentos gratuítos de Java para jovens de baixa renda.

Peço perdão pelo palavreado, mas acho que esse tipo de programa é do c*ralho. Quando eu vejo a comunidade Java fazendo esse tipo de coisa eu sinto uma enorme inveja (uma inveja sadia) deles. Queria que a nossa comunidade fizesse o mesmo e ao mesmo tempo me sinto incapaz de ‘correr atrás’ de criar um projeto nesse estilo.

Os mais apressados provavelmente vão me dizer: “Não fica com inveja não Osvaldo, eles só conseguem fazer esse tipo de coisa porque eles tem patrocínio da Sun, do ITI e do Serpro”. E é nesse ponto que eu discordo.

A gente não teve dinheiro e organizou nossa 1a. PyConBrasil (tá, na verdade quem organizou foi o Senra com a ajuda do Rubens Queiroz e o pessoal da Unicamp). Foi grandiosa como a Sun Tech Days? Provavelmente não. Mas eu, que já assisti a algumas palestras da Sun Tech Days, posso dizer que nossas palestras tinham um nível muito bom e o público presente ao evento estava muito mais interessado em Python do que os programadores Java estavam interessados em Java.

Acho que pra que esse tipo de iniciativa siga em frente nós da comunidade pythonica precisamos nos mexer e ‘agitar’ mais o nosso meio. Algumas vezes precisamos sair da frente de nossos computadores e de nossas tarefas de desenvolvimento, vestir um ‘bonézinho marketeiro’, a partir para a luta.

Porque é importante divulgar Python hoje? Para que no futuro a gente não consiga trabalhar com Python porque nenhuma empresa vai querer usar essa tecnologia por não conseguir achar profissionais especializados.

Quero deixar claro também que na nossa comunidade não existem figuras de ‘liderança’ nos mesmos moldes do Bruno Souza/Javaman que trabalha ‘agitando’ as coisas para a comunidade Java. Na nossa comunidade todos são livres para iniciar as coisas. Depois de iniciadas é só pedir ajuda que certamente receberá.

Aos empresários, mesmo os pequenos empresários, é interessante lembrar que é possível ajudar a comunidade a promover esse tipo de atividade sem desembolsar (ou talvez desembolsando muito pouco) dinheiro.

Vamos começar a agitar coisas legais que façam com que as outras comunidades sintam a ‘invejinha’ que hoje eu sinto delas.


Conisli, a redenção(?)

Postado por Osvaldo Santana

É isso aí. O pessoal do Conisli iniciou o processo de recebimento de proposals para o seu congresso que vai acontecer em São Paulo nos dias 3, 4 e 5 de novembro desse ano.

Acho que chegou o momento dos pythonistas brasileiros submeterem todas aquelas palestras que foram recusadas para o FISL. Como o Conisli é um evento com o foco mais ‘técnico’ e menos ‘político’ a gente tem mais chances de ser ouvido. Acho que isso pode acontecer porque se a gente não tem um lobby político certamente temos um lobby no meio técnico que é formado pelos vários desenvolvedores de SL brasileiros que realmente desenvolvem software livre aqui no Brasil.

Os grandes desenvolvedores de SL aqui no Brasil usam Python e quando não usam Python possuem uma grande simpatia por essa linguagem.

Quando estiverem submetendo suas palestras tomem um cuidado muito grande na descrição da mesma. Sejam objetivos e evitem ‘difamar’ tecnologias nessas descrições elembrem-se que os patrocinadores do evento podem não gostar de ver palestras que falem mal de seus ‘produtos’ (vide provável caso FISL / Sun / Java / Python).

Para os palestrantes de primeira viagem uma dica: lembrem-se de pedir ajuda para palestrantes mais experientes. Tenho certeza que pessoas como o Rodrigo Senra, Rudá Moura, Gustavo Niemeyer e até mesmo eu terão o maior prazer em ajudá-los com informações, dicas para montar apresentações e até mesmo para ‘revisarem’ a mesma depois de pronta.

Vamos trabalhar para ocupar todos os espaços a que temos direito nesse evento.


Arrogância Pythonica

Postado por Osvaldo Santana

Não é muito raro ouvir (ver) em alguns sites pessoas dizendo que a comunidade Python é arrogante. Também não é difícil notar que existem talvez umas 3 pessoas que dizem isso. Este post se tornou necessário porque apesar de serem poucos essas pessoas são extremamente ruidosas.

Se o trabalho deles é o de ‘destruir’ a nossa comunidade temos que agir imediatamente para derrubar o mito criado por essas pessoas.

A comunidade Python no Brasil hoje está crescendo num ritmo bom que garante que ela aumente de tamanho sem perder a qualidade, ou seja, estamos crescendo e não inchando.

Para todos os pythonistas brasileiros é importante ter pessoas esforçadas em aprender e a estudar essa ferramenta e não sangue-sugas que simplesmente entram para o time porque é sexy usar uma ‘linguagem alternativa’ ou porque precisam entregar um trabalho para o seu professor e precisam de alguém para fazer o serviço (esse tipo, aliás, não é exclusivo de nossa comunidade).

Algumas das pessoas que propagam que a comunidade Python brasileira é ‘arrogante’ fazem parte dessa imensa minoria que tentara dar uma de espertos para cima da nossa comunidade.

Coisas do tipo “<loser> Ei! faça o meu trabalho de faculdade? <pythonista_arrogante> Não <loser> Nossa! Como vocês são arrogantes!” são menos incomums do que deveriam ser.

Uma outra coisa que também faz com que o clima esquente em nossas listas de discussão é: intolerância. Fico impressionado como as pessoas andam intolerantes. Juntando à essa intolerância a impossibilidade de expressar sentimentos via e-mail e o estrago está feito. Vou ilustrar algo real que aconteceu em nossa lista recentemente em uma discussão que falava sobre a total liberdade dá ao programador e sobre os perigos que isso representava:

—–8
Parece coisa de C o programador sabe o que ta fazendo ele permite fazer qualquer loucura heheh
—–8

Uma opinião pessoal interessante, com um “heheh” no final que demonstra claramente que trata-se de uma brincadeira. A resposta para isso foi:

—–8
Cuidado com este tipo de comentário. Está sugerindo programadores em Python não sabe o que está fazendo?
—–8

A nossa sorte que a pessoa que mandou a primeira mensagem era uma pessoa legal e não resolveu sair da lista e sair por aí falando que todos os pythonistas agem dessa maneira. Não é legal condenar toda uma comunidade por um equívoco cometido por um dos membros. O pythonista que foi descuidado em sua resposta, por exemplo, é um excelente membro da lista e prontamente responde à todos que solicitam ajuda, mas dessa vez, admito, pisou na bola.

Esse problema também ocorre em diversas outras listas de discussão que eu participo e por isso eu digo e repito à todos que estão lendo isso aqui: Sejam tolerantes em discussões, principalmente nas ocorridas através de mensagens escritas onde a carga emocional não pode ser trasmitida de forma satisfatória.

Uma outra dica para os recém-chegados ao meio do Software Livre em geral: ninguém tem obrigação de te ajudar em nada no universo do Software Livre. As pessoas te ajudarão em solidariedade e no interesse de que a comunidade do Software Livre cresça com pessoas esforçadas. Na comunidade do Software Livre não tem bobos e ‘nerds babões’ como dizem por aí, portanto, não tentem dar uma de espertos pra cima da gente que não vai colar. Demonstre que você já tentou solucionar os seus problemas antes de enviar uma dúvida para uma lista.

E o recado mais importante: Antes de mandar uma mensagem para uma lista de discussões (qualquer uma e não apenas a python-brasil) dê uma lida nesta página para que depois você não fique nos chamando de arrogantes.


A GUI está ‘morta’

Postado por Osvaldo Santana

Sempre que escrevo sobre algum assunto ‘polêmico’ tenho uma certa tendência a escrever ‘pisando em ovos’. Isso faz com que o que eu escreva fique complicado de se ler. Espero que isso não ocorra agora mas, caso ocorra, peço um pouquinho de paciência para passar pelo texto todo.

O título deste post é um exercício de futurologia. Se eu fosse um milionário eu diria que isso é uma profecia, mas como sou um ‘mortal-comum-ligeiramente-devedor’ digamos que essa história é apenas uma impressão que eu tenho que faz com que minha intuição me avise: a GUI está caindo aos poucos em desuso.

Quem vai ser o algoz das Interfaces Gráficas? A Web.

“Mas Osvaldo, a Web já está aí a um tempão e as GUIs ainda existem. Além disso essa previsão de que a Web iria matar as GUIs já vêm de longa data…”. Ok. Devo admitir que isso é parcialmente certo mas recentemente algumas coisas apareceram na Web que abalaram a crença dos que acreditam nas GUIs: Gmail, Google Maps, Google Suggest e Web Accelerator. O que esses caras tem em comum? Eles surgiram no Google e, com excessão ao Web Accelerator, usam a idéia da tecnologia Ajax.

Esses caras, junto com alguns outros sites espalhados pela Web em páginas que falam sobre Javascript, DHTML, XHTML, DOM, etc, etc e etc, estão mostrando que os navegadores hoje podem fazer coisas que ninguém imaginava a alguns pouquíssimos anos atrás.

Para apimentar ainda mais esta história, recentemente o Google contratou desenvolvedores do Mozilla e do Internet Explorer. Meu chute? Eles vão desenvolver uma suite Office inteira para ser usada via navegador e disponibilizar discos remotos para podermos gravar os nossos arquivos. Além, é claro, de indexá-los para facilitar a nossa busca e para que facilmente anexemos documentos da Rede em nossos trabalhos (essa, sem dúvida, é de fazer até os não-conspiracionistas tremerem, mas… :) ). Neste esquema também teremos mais ASPs (Application Service Providers) pipocando por aí.

A facilidade com que se distribui atualizações de software, o alcance das soluções vendidas, o custo operacional menor (suporte), outras formas de receita (publicidade), e mais outras coisas que certamente os mais espertos já pensaram fazem com que as soluções Web sejam muito mais vantajosas que as atuais aplicações GUI. Com a computação pessoal permitindo a navegação em qualquer lugar em que você esteja e suas aplicações rodando remotamente em algum lugar da Web darão total liberdade a qualquer tecnomaníaco (como eu).

Do lado dos desenvolvedores cada dia mais o desenvolvimento de aplicações Web tem se tornado mais fácil (tem casos até em que desenvolver para Web é mais fácil do que desenvolver software ‘tradicional’). Para confirmar o que eu digo é só ver o Zope, e o Plone com ferramentas como o ArchGenXML. Eu vi uma aplicação sendo desenvolvida em velocidade espantosa em uma apresentação do Fabiano “xiru” em nosso evento em Abril.

Quem serão os responsáveis pela perpetuação das GUIs? Aplicações gráficas mais específicas (CADs, DTPs, etc) e Jogos de computador que exigem alta performance dos equipamentos.

Por isso você, desenvolvedor brasileiro, tente se antecipar à esse movimento e comece a trilhar os caminhos do desenvolvimento Web. Só assim poderemos deixar para trás esse ‘mundinho antiquado’* dos Delphis, Kylixes e Visuais Basics e entrar pra valer no futuro tecnológico mundial.

* Sei que os Delphis, Kylixes e Visuais Basics ainda solucionam vários problemas de empresas brasileiras e que o investimento para se reescrever as centenas de milhões de linhas de códigos dessas plataformas para usar tecnologias mais novas é alto demais. Mas nunca devemos esquecer que no nosso mundo tecnologia ‘velha’ custa caro também e um investimento maior hoje poupará muito dinheiro futuro.


Nokia 770

Postado por Osvaldo Santana

Como vocês devem ter acompanhado nos últimos dias a Nokia anunciou o lançamento do Nokia 770. Nada demais até aí exceto pelo fato de ser uma plataforma totalmente nova da Nokia. Esse dispositivo também não será um celular e isso é uma outra novidade.

Além dessas novidades existe uma outra que eu acho que é a mais importante de todas. A plataforma. O Nokia 770 vai rodar com a plataforma Maemo (www.maemo.org) que é totalmente baseada em software Open Source. Isso significa que dentro daquele ‘aparelhinho’ alí vai bater um coração Linux com um servidor X e aplicações baseadas em uma leve variante de Gtk. Perfeito, não é? Quase.

Para desenvolver nessa plataforma é necessário usar linguagem C e programar em C é complicado. Para resolver esse problema existe uma alternativa: portar uma outra linguagem para ser usado na plataforma Maemo. Essa alternativa nos leva a outro problema que é: qual linguagem?

Preciso dizer que linguagem eu escolheria para ser a principal ferramenta de desenvolvimento para Maemo? :)
Eu e meu amigo Rudá estamos trabalhando nisso e a nossa maior briga tem sido com o tamanho do Python (juntamente com PyGtk + PyGame). Nossa meta é colocar isso tudo aí em 5MB e hoje temos só o Python (já enxuto) ocupando 2.5M.

Se vocês tiverem dicas/sugestões de como diminuir o tamanho das coisas podem colocar aqui nos comentários ou envie para a python-brasil.

Ah! E já liberamos o primeiro release:

http://www.indt.org.br/maemo/index.html#python

PyConBrasil

Postado por Osvaldo Santana

Sei que demorei pra expor as minhas impressões sobre o primeiro evento ‘pythoniano’ realizado no Brasil. A verdade é que eu ainda estava em êxtase.

Foi muito massa. A 1a. PyConBrasil (que ainda era tratada por alguns como PyConDayBrasil) foi fantástica porque mostrou como o nível dos usuários de Python é uma coisa de fazer inveja à muitas outras comunidades.

Também, o que mais poderia ser esperado de figuras como: Rodrigo Senra, Luciano Ramalho, Sidnei da Silva, Fabiano Weimar (xiru), Gustavo Niemeyer, Jean Ferri, Marco André, Luciano Pacheco, Gustavo Barbieri que já são bastante conhecidos por nós através da lista de discussões e com figuras não tão conhecidas por nós mas que deram verdadeiros shows como no caso do Vinícius (que usa Python para cálculo numérico em seu curso de Eng. de Materiais), o João Calligaris (que mostrou Python+Gimp para uma platéia que aparentemente não conhecia essa possibilidade) , Johan Dahlin (que é um dos maiores hackers do universo Gnome e responsável pela manutenção do PyGTK), o Frederico (que a partir de então é a minha prova viva de que é possível aprender Python rapidamente mesmo não sendo um programador), e o Evandro (que mostrou o trabalho que a Async está fazendo com o Stoq e mostrou um pouco de Python no desenvolvimento de ‘aplicações comerciais’).

Foram 2 dias onde não se via pessoas saindo do auditório porque uma palestra ou outra estava ‘chata’. Teve uma presença razoável de pessoas (não lotou mas quase não se via cadeiras vazias também).

Quase todas as palestras foram ‘interativas’ e as pessoas da platéia trocavam idéias com os palestrantes o tempo todo ressaltando ainda mais a competência dos palestrantes que prontamente respondiam à todas as dúvidas.

E a 2a. PyConBrasil?

Você ainda não está se preparando? :) Eu não quero ouvir desculpas esfarrapadas para não ir à 2a. PyConBrasil. Existe uma chance da 2a. conferência também seja em Campinas mas nada impede que a gente converse e tente mudá-la para outro lugar (de forma a criar uma conferência ‘nômade’).

Para todos que ficaram com água na boca e não puderam estar presentes ao evento o pessoal da Unicamp disponibilizou as palestras em stream de vídeo e no PythonBrasil encontra-se os arquivos com a maioria das palestras.


Nem tudo é perfeito

Postado por Osvaldo Santana

Recentemente, durante o trabalho de escrever o meu livro sobre Python (não, não está pronto e ainda falta muito), me deparei com uma característica que achei superlegal em Python. Essa característica provêm da idéia de que uma string também é uma seqüência tal como listas ou tuplas. Essa característica permite que eu faça coisas como:

>>> a = [1,2,3]
>>> a += "spam"
>>> a
[1, 2, 3, 's', 'p', 'a', 'm']

Quando estava jantando com o pessoal da PyConBrasil (que aliás foi muito massa) fui mostrar pra eles essa característica, mas como não lembrava exatamente o exemplo anterior eu demonstrei conforme abaixo:

>>> a = [1,2,3]
>>> a = a + "spam"

Qual não foi meu espanto quando o resultado obtido foi um:

>>> a = [1,2,3]
>>> a = a + "spam"
Traceback (most recent call last):
 File "", line 1, in ?
TypeError: can only concatenate list (not "str") to list

Quando vi isso entendi que o ‘problema’ ocorre porque o operador “+=” é mapeado para o método __iadd__() enquanto que o operador “+ é mapeado para o método __add__”.

Até aí tudo certo. O problema da tal ‘inconsistência’ é que no caso específico dos objetos de listas (list) o método __iadd__() nada mais é do que um apelido para o método extend().

Após algumas discussões com outros pythonistas de alto nível não foi possível chegar a nenhuma conclusão sobre se iss é ou não é um erro de design da linguagem.

Mais sobre essa discussão pode ser visto em:

http://thread.gmane.org/gmane.comp.python.brasil/8755