Agora com o meu próprio domínio http://blog.lucmult.com.br

julho 5, 2009

Após muito tempo criei vergonha na cara e criei meu próprio domínio!


http://blog.lucmult.com.br

A partir de agora atualizações só 😉


OLPC Game Jam no FISL

abril 21, 2008

OLPC Game Jam no FISL

Durante o FISL rolou o Game Jam da OLPC, que consiste em criar um jogo educativo em 30 horas para o XO da OLPC.

É uma competição e quem avalia os jogos são as próprias crianças.

O Andrews Medina e Bruno Gola se inscreveram para participar e assim que fiquei sabendo mendiguei pedi para entrar na equipe também.

Quando eles se inscreveram já tinha começado a competição, o prazo encerrava as 20h da sexta-feira.

Nós fizemos a minha inscrição, mas programar que era bom nada, isso até aproximadamente às 14h da sexta-feira, ou seja, 6 horas antes de acabar o prazo.

Finalmente começamos a codar e resolvemos fazer isso lá no espaço da APyB onde tinha conexão a cabo, pois o wifi estava horrível.

Essa decisão foi bem prejudicial, pois a todo momento vinham pessoas falar com a gente, ou para conhecer Python ou falar de Python, ou queriam saber como estava o andamento do jogo.

E não foi só isso que nos tirou a concentração, a nossa esquerda, na imagem vocês podem ver uma pessoa de camiseta azul, estavam o hermanos da PyAr – Python Argentina, e tinha uma hermana muito atraente que tirava a nossa concetração e a nossa direita havia um espaço não habitado, mas durante uma parte da tarde rolou uma discussão sobre Java X Python, mas ficar ouvindo sobre Java e J daqui e J de lá, não foi fácil.

Os hermanos também estavam participando do Game Jam, eles sempre participam da PyWeek uma competição de games em Python que dura uma semana.

E não era o bastante, boa parte do tempo ficamos codando diretamente no chão, pois não havia cadeiras livres e nem espaço na mesa.

Aqui nessa foto da para ver nosso espaço no chão, da esquerda para direita, o note do Andrews, o meu MacBook e o note do Gola e o XO que recebemos para testar o jogo. Nesse momento o Gola estava inicializando o repositório http://svn.brunogola.com.br/olpyc

O nosso jogo é uma réplica do Genius porém adaptado para o XO e que pode ser jogado com o XO em modo tablet. O nome final ficou como OLPyC Genius

Para quem não lembra o Genius.

Depois de conseguirmos espaço na mesa chegou um cara falando comigo:

  • Desconhecido – Você é amigo do Humberto Diógenes?
  • Eu – Sim.
  • Desconhecido – Você que anda sempre com o CD do Mac Leopard?
  • Eu – Sim, mas ninguém sabe que eu ando com esses CDs.
  • Desconhecido – É que deu problema na atualização do firmware do meu Mac e eu queria o CD para tentar recuperá-lo.

Mesmo deconfiando, afinal eu não o conhecia, eu emprestei o meu CD do Leopard.

Após algum tempo, ele ficou no stand a nossa esquerda tentando recuperar o Mac dele. Quando ele desistiu de recuperar o Mac, ele devolveu o CD e quis saber o que estávamos fazendo.

Quando dissemos do jogo ele falou que podia fazer umas imagens, mas a princípio nós não queríamos perder mais tempo com a arte, queríamos fazer funcionar o jogo.

Mas o cara é o Valessio Brito um dos caras que mais movimenta o Inkscape Brasil, e fez a arte do nosso jogo ficar excelente e trouxe uma nova onda de ânimo a equipe.

Por volta de umas 19:40h, o hermanos ao nosso lado terminaram o jogo deles e começaram a testar e apareceu muita gente para ver o jogo deles, devia ter umas 50 pessoas em volta do stand deles e todos vibravam muito. O pior é que nesse momento o nosso jogo estava com um bug que nem rodava mais o jogo e isso causou uma grande ansiedade.

Finalmente as 20:05h entregamos o XO com o nosso jogo instalado! E tiramos a foto da equipe OLPyC. No momento da foto estávamos muito eufóricos e o Andrews tremia que nem vara verde!

No momento de entrega encontramos os outros grupos participantes, 2 grupos do UNISINOS, que têm aula de PyGame na faculdade! Ficamos com inveja deles por terem aula de PyGame.

No dia seguinte as 2 garotinhas encarregas de julgar os jogos estavam no stand do LEC e fui mostrar para ela como jogar o OLPyC Genius, eis que ela me solta o nosso prêmio: “Eu sei, eu já joguei mais de 1000 vezes!”.

Ela falou meio que tirando uma da minha cara, mas foi uma felicidade única ouvir que nosso jogo foi jogado 1000 vezes!

No final do FISL teve o resultado do Game Jam e os hermanos ganharam com o PacMan de comer letras para formar palavras, em segundo lugar muito próximo aos hermanos ficou um dos grupos da UNISINOS com o tetris matemático.

Depois conversando com a organização soubemos que o nosso jogo de um erro na pré seleção, onde os adultos passavam pelo jogo para ver se funcionava e por isso ficamos em último lugar!

Mas a sensação de participar do GameJam foi inesquecível e sensacional. Na minha opinião foi o melhor momento do FISL.

Abaixo um screenshot do jogo.

UPDATE: Esqueci de mencionar a impressionante portabilidade do PyGame. O mesmo código rodou sem pestenejar no Linux (note do Bola e do Andres), no meu Mac e no XO.


Primeira Colaboração de Código ! :)

julho 21, 2006

Semana passada surgiu uma dúvida na lista python-brasil ,
manipulação de datas com o pymssql e como eu tenho interesse na utilização de Python com o MS-SQL dei bastante atenção à dúvida, gerando minha primeira colaboração com código a um projeto Open Source.

O Problema

Em um comando INSERT desejava-se inserir uma data no banco de dados.

No Python 2.4 temos o objeto datetime para trabalhar com datas, porém o driver de acesso ao banco (pymssql) não reconhece esse tipo e isso nos obriga a converter a data para string antes de enviar ao pymssql.

Obviamente essa conversão é uma responsabilidade do driver pymssql.

Simulei o erro com esse código:

>>> import pymssql
>>> pymssql.__version__
>>> from datetime import datetime
>>> con = pymssql.connect(host='server', user='usuario', password='senha', database='base')
>>> cur = con.cursor()
>>> cur.execute('insert into PrazoLog(Data) values(%s)',>>> [datetime(2006, 7, 20, 11, 6, 14)])
>>> con.commit()

Contornando o Problema

Após eu conseguir simular o erro na minha máquina fui investigar como contornar o erro, e graças ao fato do Python ser executado a partir dos fontes eu pude ler o código do pymssql que estava instalado na minha máquina sem ter que consultar o site, repositórios ou qualquer outro local.

Novamente graças ao Python executar os fontes, pude fazer alterações nos fontes do pymssql e simplemente testar. Obviamente como não desenvolvo constantemente em Python fiz meus testes e debugs de forma bem artesanal (usando prints).

Apenas consultando o e-mail com o problema e os arquivos que já estavam na minha máquina consegui chegar em um patch que permitia contornar o problema de forma simples rápida e ao meu ver bem feita.

Tomei alguns cuidados que achei importante, como tentar não adicionar mais uma dependência ao pymssql. A versão do pymssql que eu disponho não depende do módulo datetime e como eu sabia que esse módulo foi incorporado somente na versão 2.4 não queria adicionar essa dependência.

Lembrei-me, então, do duck typing. Como eu queria apenas o método timetuple da classe datetime.datetime. Apenas verifiquei se o objeto tem o método e tendo-o eu executo-o.

Funcionou que foi uma beleza :), testei nas 3 versões do MS-SQL que eu tenho aqui na empresa (7.0, 2000, 2005) e funcionou. Fiquei empolgado e eufórico! Mandei a minha correção para a lista e o Girão, que é quem teve o problema, falou que funcionou beleza e gostou da correção.

Colaborando com a Comunidade

Aproveitando a euforia e a “aprovação” do Girão fui a página do projeto para enviar a minha proposta de patch. O projeto está no sourceforge.net , dei uma olhada no Fórum e todas as mensagens não recebiam respostas 😦 e não achava nenhum link do tipo “reporte um bug”.

Mas navegando pelo site do projeto achei uma nota sobre a dependência do módulo datetime e achei bem estranha. Então fui verificar os fontes, nos fontes da minha máquina não via nada que levasse ao módulo datetime, então fui consultar o repositório CVS.

Qual não foi minha surpresa quando a versão do CVS revelou-me que a dependência era justamente para solucionar o mesmo problema que eu tinha solucionado :S . Fiquei meio triste, pois pensei, re-invetei a roda, mas fiquei contante pois ainda achava minha solução mais adequada por não adicionar a tão falada dependência.

Apelei e mandei o patch direto para os 2 e-mails de desenvolvedores que eu achei no site.

Após 4 dias o Andrzej Kukula, um dos desenvolvedores, me respondeu dizendo que o meu patch seria incorporado no projeto! 😀 A empolgação foi total !

Moral da História

  1. O Python facilita a leitura e a depuração dos fontes
  2. Sempre verificar a versão do CVS/SVN
  3. Colaborar com algum projeto não é tão difícil assim
      Precisa-se de:

    • um pouco de interesse
    • um pouco de experiência para saber o que esperar de um módulo/biblioteca/framework, pois para mim (e para o Girão também) a conversão de tipo era função do módulo pymssql
    • um pouco de inglês
    • o que eu menos precisei foi conhecer bem a linguagem – eu acho
  4. e por último, mas não menos importante, colaborar é empolgante e divertido, principalmente em Python 😉

Post de inaguração

junho 26, 2006

O Começo

No fim de semana passado eu e um colega de faculdade fomos estudar para a prova semestral de Web Service.

Após muita enrolação e algum estudo conseguimos fazer um exemplo de um servidor de Web Service e um Client de Web Service em Java. Bom, conseguimos não, o eclipse fez para gente, mas estava tudo conforme as aulas dadas. 😉

Obviamente fui tentar fazer a mesma coisa em Python, depois de algumas passagens pelo Google e 2 erros cruciais de digitação consegui fazer o client e o server também em Python.

Ai eu fui exibir o Python para o Marcelo (meu colega de faculdade), ele achou bem legal e soltou a seguinte frase “Ow, por que você não faz um blgo com essas coisas?”.

Eu respondi que não porque ando muito sem tempo e blá, blá, blá… Mas aquilo ficou na minha cabeça e enquanto eu não vim aqui criar o blog eu não sosseguei.

A proposta

A minha idéia para o blog é documentar e comentar meus estudos que são na maioria dos casos sobre Python, mas tem algumas outras coisas, como PostgreSQL por exemplo.

Talvez eu comente algo sobre política também, pois eu gosto de política e esse ano tem eleição então devo colocar algumas idéias por aqui.

A Falta de experiência

Não tenho muito experiência com blogs e seus detalhes, mas dei uma lida aqui na ajuda do Blogger para começar.

Por exemplo o Dirceu já me “linkou” no seu blog, como eu sou um leitor do blog dele também eu tentei “linkar” ele aqui no meu blog, assim como outros blogs que eu leio.

Como na ajuda do Blogger não ficou muito claro como fazer, fiz de um jeito que achei meio “força bruta” fui no template do meu blog e adiconei o código HTML com os links para os devidos blogs.

Periodicidade dos Posts

A princípio pretendo uma meta de pelo menos um post por semana, que é mais ou menos o reflexo de um ciclo de estudo que eu faço.

Começo com umas pesquisas no meio da semana e no fim de semana dou uma detalhada um pouco maior, como conclusão do estudo prentendo fazer um post aqui.

Obviamente essa é uma meta, mas como eu tenho visto a maioria dos blogs que leio com uma periodicidade de post baixa, já fico com impressão que é uma meta difícil de cumprir.

Bom por hoje é só que já ficou bem longo, mas acho que eu consegui resumi o que eu queria dizer no meu “discurso de inauguração”. 🙂

Até mais.