PyConBrasil 2008

Para os que perderam a PyConBrasil 2008, segue o link da minha lightning talk sobre extensões para o Elixir/SQLAlchemy. Várias outras palestras legais estão no SlideShare com a tag pyconbrasil2008. Confiram!

Destaque especial para a palestra do Daniel Baggio, sobre reconhecimento de imagens com demonstrações ao vivo, na minha opinião a melhor do evento.

Uma crítica construtiva às traduções do Ubuntu

A notícia quente da semana foi o lançamento do novo Ubuntu versão 8.04, que eu fiz questão de instalar.

Tudo funcionando bem: reconhecimento de hardware, particionamento, redimensionamento de NTFS e tudo mais. Era de se esperar, funcionava na versão anterior, não havia motivo para deixar de funcionar agora.

Mas com as traduções por alguma razão é diferente. O painel superior do GNOME conta com novos erros de tradução onde estava tudo certo nas versões anteriores. Alguns pequenos erros de tradução passarem é tolerável mas errar no painel principal do GNOME?! É simplesmente o principal programa do Ubuntu!

Em Aplicações->Acessórios temos o item “Consola” (provavelmente vindo do pt-PT), que antes era corretamente chamado “Terminal”.

Em Sistema->Preferências temos o item “Rato” (certamente vindo do pt-PT). A palavra mais usada no pt-BR para “Mouse” é “Mouse” mesmo.

Em Sistema->Administração temos o item “Testando hardware”, provavelmente vindo do inglês “Hardware testing”, que deveria ser traduzido como “Teste de hardware” ou “Testar hardware”.

E porque eu não vou lá e traduzo no Rosetta ao invés de reclamar? O Rosetta não conta com uma ferramenta de busca, que é requisitada desde 2005. Eu não vou achar essas strings na mão no meio de mais de outras 600 para o painel do GNOME.

Fiquei bastante feliz com a notícia que o brasileiro André Gondim é destaque nas traduções do Ubuntu, mas fica a crítica construtiva ao atual sistema de tradução: Não existe um processo de revisão da tradução, principalmente para os programas mais usados? Como é que uma tradução adequada foi perdida?

Slashdot e o sensacionalismo

Estou cansado do sensacionalismo da Slashdot.

A última foi com relação ao Python 3.0, reproduzido na íntegra abaixo:

“Organizations using Python will be affected in a major way by changes in store for the language over the course of the next twelve months, Linux.conf.au attendees were told this morning. The Python development community is working towards a new, backwards-incompatible version of the language, version 3.0, which is slated for release in early 2009. Anthony Baxter, the release manager for Python and a senior software engineer at Google Australia, said “We are going to break pretty much all the code. Pretty much every program will need changes.” Baxter also added another tidbit for attendees, saying that Python accounts for around 15 percent of Google’s code base.”

A notícia não é falsa (apesar de ser bem velha), o Python 3.0 vai realmente quebrar muito código. Mas ela não diz que praticamente todas as mudanças necessárias podem ser feitas por um script. Também não diz que o Python 2.6 vai continuar a ser desenvolvido e mantido por mais alguns anos, nem que talvez exista um 2.7. Também não diz que o Python 2.6 além de rodar código atual, avisará de quebras de compatibilidade com a versão 3.0. Se não bastasse todo o esforço feito, a instalação paralela de Python 2.6 e 3.0 será possível, o que garante que as aplicações continuarão rodando.

Fora que isso é pratica completamente normal. Perl 6, VB.NET, C# 2.0, PHP5, não faltam exemplos de linguagens que quebraram compatibilidade com seus antecessores em algum momento.

Porque tanto exagero? Será que é porque traz visitantes e receita com as propagandas? Ou será apenas incompetência editorial?

Publicado em Python. Tags: , . 1 Comment »

sqlalchemy-validations 0.1

sqlalchemy-validations 0.1 is out!

SQLAlchemy validations is an easy way to be sure that no inconsistent data will be saved to your database. It is a new extension for SQLAlchemy/Elixir that checks if an object is consistent according to a customizable set of rules just before being saved.

This is the first release. Opinions/criticisms/suggestions are appreciated and should be sent to lameiro at gmail.

 

Streets of Rage Remake e algumas descobertas

Primeiro, quero recomendar a todos que eram viciados em Streets of Rage (Megadrive) que baixem imediatamente o Streets of Rage Remake. É uma obra-prima. A jogabilidade está muitissimo fiel, a maior parte do jogo é baseada no Streets of Rage 2, mas há alguns elementos de SoR1 e SoR3 e também novas idéias como finais alternativos, novas fases, o Mr. X e Shiva como personagens secretos entre outras novidades.

Procurando sobre como destravar os personagens e modos secretos, achei num fórum: “I love the people who made this and if ever they need an organ transplant I have several superflous family members I would be happy to sacrifice.” Hahaha 🙂

Vamos às descobertas agora:

Descobri que o bolo na foto abaixo:

Axel e o bolo

NÃO É BOLO! Eu sempre pensei que fosse! Veja só o que aparece quando eu como:

Maçã

Ah uma maçã. Claaaro.

Assim como em Rock and Roll Racing, outro clássico, o que na figura abaixo parece ser uns pregos:

Graxa na pista

Nada de pregos. Graxa. O branco é o reflexo da luz. E não sou eu que sou maluco não, eu jogava RRR com meus amigos quando criança (e depois de crescido também) e ninguém percebeu que era graxa.

Ainda bem, porque prego não devia fazer rodar. 🙂

Read it later

Read it later é uma extensão do Firefox que serve para você marcar que quer ler uma página depois, quando tiver tempo. E ainda é possível baixar todas as páginas para leitura offline.

Vale a pena.

Publicado em Web. Tags: . 1 Comment »

xor swap

Motivado pelo Log4Dev, quero contar sobre um truque legal: o xor swap (também conhecido por triple-xor trick).

O xor swap é um truque para trocar o conteúdo de 2 variáveis sem usar uma terceira. Em C, o jeito normal de trocar dois ints (x e y) é:

temp = x;
x = y;
y = temp;

Com o xor swap, o código fica:

x = x ^ y;
y = x ^ y;
x = x ^ y;

E aí pronto, suas variáveis estão invertidas. Pode acreditar (ou ler uma explicação bem mais detalhada). Legal né?

E qual a aplicação disso? Bem, um dia os microcontroladores tiveram quantidades bem escassas de memória, e jogar um int fora para variável temporária assim estava fora de cogitação. Hoje muitos microcontroladores tem uma RAM razoável e a perda de legibilidade e manutenibilidade acarretadas não vale mais a pena para estes controladores. Para os que vivem no cruel mundo dos 128 bytes de RAM, ainda vale a pena.

Publicado em C. Tags: . Leave a Comment »