Mosaico Livre

Decken no PyPI

Publicado em Uncategorized por claudiotorcato em 6 junho 2010

O Decken já pode ser testado no Linux. Ainda é versão bem inicial, com poucas funcionalidades e quase nada no menu funciona e o que tem lá é provisório.

Utilizem o easy_install para instalar a aplicação. No Ubuntu e Debian, vocês podem baixar esse instalador de pacotes Python assim:

sudo apt-get install python-setuptools

Depois disto bastam os seguintes comandos:

sudo easy_install DeckenMagicPlugin

sudo easy_install Decken

Ainda na linha de comando, para iniciar a aplicação execute: decken_script.

Ao iniciar a aplicação ele já começa atualização das coleções de cards de Magic. Caso você precise fechar a aplicação antes de concluir as atualizações, não tem problema. No menu Edit há o comando para baixar as atualizações. Ele continua de onde parou.

O caminho ainda é longo para ter uma aplicação de fato útil.

Decken no Launchpad

Publicado em Uncategorized por claudiotorcato em 3 junho 2010

Havia prometido publicar o codigo-fonte do MaginBook (agora Decken) somente quando o mesmo atualizasse sua base de dados sozinho. Ele ainda não faz isso, mas publiquei o código com que venho trabalhando e há scripts para realizarem esta tarefa. De qualquer modo, o arquivo database.db já vem com o cadastro de uma grande quantidade de cards de Magic, então não haverá problemas com isso. Uma vez que ele esteja executando, baixará automaticamente as imagens.

Vocês podem ver e baixar o código aqui. Lá vocês encontraram o Decken propriamente dito e mais o plugin para Magic.

Quando baixarem o plugin, não esqueçam de executar python setup.py develop dentro da pasta.

Vocês terão mais chances de executar o programa no Linux, ok? Pelo fato de está trabalhando no Mac ainda não tenho noção de quais os nomes das dependências via apt-get (no Ubuntu) eu preciso baixar. Tenho de informar no setup.py do Decken quais dependências ele deve baixar via easy_install. Por enquanto, só informei uma dependência: BeautifulSoup.

Depois que eu tiver com um programa capaz de ser funcional e instalável via easy_install, informo por aqui.

MaginBook sem a infra do Lackey

Publicado em desenvolvimento, linux, open source, python por claudiotorcato em 28 maio 2010

Mudei de idéia em relação a usar a infraestrutura do LackeyCCG.

Optei por implementar um plugin que dado uma lista de siglas de sets de Magic, acesse um site e carregue as informações dos cards, gravando-as num banco de dado SQLite. Foi uma escolha mais divertida.

Outra vez a biblioteca BeautifulSoup foi incrível. Navegar na árvore de tags HTML e extrair os dados é moleza com ela.

Glade, Mac OS e MaginBook

Publicado em desenvolvimento, open source, python por claudiotorcato em 26 maio 2010

Ora, as coisas não poderiam ficar melhores. Depois do trabalho de pesquisa que estava tendo para fazer certas coisas com Gtk, descobri que seria possível utilizar o Glade no Mac OS X. Baixei o binário e problema resolvido.

O trabalho é devagar, pois procuro o melhor jeito para desenvolver o MaginBook. Além de um tutorial ou outro sobre Gtk e Glade, consegui um exemplo inesperado, um organizador de decks e cards feito em Python com Gtk! O criador do Magiclibrary escreveu um comentário num post anterior sobre este assunto. Fui atrás dos códigos-fonte da aplicação para saber como ele resolveu certas coisas. O bacana é que ele também utilizou o Glade como ferramenta para montar a interface gráfica.

Só lembrando a vocês que só vou disponibilizar o código da aplicação quando ela estiver conseguindo baixar a descrição das cartas e suas imagens.

Além do mais, é importante salientar que vou usar a infra-estrutura de plugins do LackeyCCG, onde já se fornece praticamente tudo: informações sobre blocos, edições, descrição das cartas e imagens.

Organizador de Decks em Python

Publicado em desenvolvimento, open source, python por claudiotorcato em 22 maio 2010

Tenho um Nokia N800 que está parado deste que resolvi adotar uma agenda não-eletrônica. O fato do tablet não ter uma bateria de uma boa duração, muitas vezes não tinha a agenda disponível quando realmente precisava.

Bom, desde então fiquei pensando numa maneira de torná-lo útil novamente. Como eu jogo Magic The Gathering, um jogo de cartas colecionáveis, seria interessante ter uma lista de cartas e decks sempre à mão.

As funcionalidades que pretendo implementar para este organizador de decks, que chamarei de Maginbook:

  • Pesquisa de cartas
  • Download de novas cartas
  • Criar e baixar decks da Internet
  • Exportar decks para programas como MWS, LackeyCCG e Apprentice
  • Cotação das cartas

Eu comecei a testar as bibliotecas necessárias para este trabalho. Depois publico o código em algum repositório. Haverá duas versões: uma para Linux/Mac e outro para o Nokia N800 e outros tablets da linha.

DiceDnd 1.1

Publicado em desenvolvimento, linux, mobile, open source, python, Uncategorized por claudiotorcato em 29 setembro 2009

Depois de um final de semana complicado e acamado, voltei a escrever na segunda-feira os melhoramentos do DiceDnd. Pretendia melhorar o visual, habilitar o modo fullscreen e ainda fazer um pacote debian para distribuir o programa. Devido às dificuldades encontradas, fiquei somente no melhoramento visual. Pois bem, tirei umas fotos do aplicativo funcionando (não descobri uma função print screen no N800) e ainda estou disponibilizando uma nova versão abaixo.

Vou ficar devendo o fullscreen e o pacote.

DiceDnd no Nokia N800

DiceDnd no Nokia N800

DiceDnD com o resultado da jogada de dados

DiceDnD com o resultado da jogada de dados

fonte do dicednd.py (atualizado)

#!/usr/bin/python2.5

import osso
import gtk
import hildon

def labela(texto):
    fonte = '%s'
    etiqueta = gtk.Label(fonte % texto)
    etiqueta.set_use_markup(True)
    return etiqueta

def string_jogada(vezes, dado, soma):
    if soma > 0:
        sinal = '+'
    elif soma == 0:
        sinal = ''
    else:
        sinal = '-'
    return '%dd%d%s%s' % (vezes, dado, sinal, abs(soma) or '')

class DiceDnD(hildon.Program):
    def __init__(self):
        self.dado_atual = 0
        self.vezes = 0
        self.soma = 0
        hildon.Program.__init__(self)
        self.window = hildon.Window()
        self.window.set_title('DiceDnd')
        self.window.set_border_width(40)
        self.window.connect("destroy", self.quit)
        self.add_window(self.window)

        tabela = gtk.Table(5,4,False)
        self.window.add(tabela)        

        self.dado4 = gtk.Button()
        self.dado4.add(labela('4'))
        self.dado6 = gtk.Button()
        self.dado6.add(labela('6'))
        self.dado8 = gtk.Button()
        self.dado8.add(labela('8'))
        self.dado10 = gtk.Button()
        self.dado10.add(labela('10'))
        self.dado12 = gtk.Button()
        self.dado12.add(labela('12'))
        self.dado20 = gtk.Button()
        self.dado20.add(labela('20'))
        self.botaoMais = gtk.Button()
        self.botaoMais.add(labela('+'))
        self.botaoMenos = gtk.Button()
        self.botaoMenos.add(labela('-'))
        self.botaoJogar = gtk.Button()
        self.botaoJogar.add(labela('Jogar'))
        self.frame = gtk.Frame()
        self.montagem = gtk.Label('Jogada')
        self.frame.add(self.montagem)

        tabela.attach(self.dado4,0,1,0,1)
        tabela.attach(self.dado6,1,2,0,1)
        tabela.attach(self.dado8,2,3,0,1)
        tabela.attach(self.dado10,0,1,1,2)
        tabela.attach(self.dado12,1,2,1,2)
        tabela.attach(self.dado20,2,3,1,2)
        tabela.attach(self.botaoMais,0,1,2,3)
        tabela.attach(self.botaoJogar,1,2,2,3)
        tabela.attach(self.botaoMenos,2,3,2,3)
        tabela.attach(self.frame,0, 3, 3, 4)

        self.dado4.connect('clicked',self.preparar,4)
        self.dado6.connect('clicked',self.preparar,6)
        self.dado8.connect('clicked',self.preparar,8)
        self.dado10.connect('clicked',self.preparar,10)
        self.dado12.connect('clicked',self.preparar,12)
        self.dado20.connect('clicked',self.preparar,20)
        self.botaoMais.connect('clicked',self.incrementar,1)
        self.botaoMenos.connect('clicked',self.incrementar,-1)
        self.botaoJogar.connect('clicked',self.mostrar)

        self.window.show_all()

    def mostrar(self, button):
        if self.dado_atual == 0:
            return
        import random
        total = 0
        for i in range(self.vezes):
            total += random.randint(1,self.dado_atual)
        total = total + self.soma
        jogada = string_jogada(self.vezes, self.dado_atual, self.soma)
        self.show_message('%s' % total)

    def preparar(self, button,valor):
        if valor  self.dado_atual:
            self.dado_atual = valor
            self.vezes = 1
            self.soma = 0
        else:
            self.vezes += 1
        self.montagem.set_text(string_jogada(self.vezes, self.dado_atual, self.soma))

    def incrementar(self, button,valor):
        self.soma = self.soma + valor
        self.montagem.set_text(string_jogada(self.vezes, self.dado_atual, self.soma))

    def show_message(self, message):
        dlg = hildon.Note('information', (self.window, message))
        dlg.run()
        dlg.destroy()
        #pango_markup = '%s\n%s' % ('DiceDnD', message)
        #hildon.hildon_banner_show_information_with_markup(gtk.Label(''), None, pango_markup)

    def quit(self, evt):
        gtk.main_quit()

    def run(self):
        gtk.main()

def main():
    prog = DiceDnD()
    prog.run()

if __name__ == "__main__":
    main()

DiceDnd

Publicado em desenvolvimento, linux, mobile, python por claudiotorcato em 26 setembro 2009
Os dados usados no RPG D&D

Os dados usados no RPG D&D

A minha idéia exploratória de criar um aplicativo para gerar jogada de dados no meu N800  ocupou umas horas da noite de sexta e início de madrugada do sábado.

O objetivo da aplicação é bem simples. Eu vou voltar a mestrar campanhas de RPG. Comprei o recente D&D 4ª Edição em português mais uma aventura para personagens iniciantes. Não tenho todos os tipos de dados necessários. São 6 tipos, por quantidade de faces: 4, 6, 8, 10, 12 e 20. Assim, queria simular a parada de dados pelo meu N800, um internet tablet da Nokia.

Uma das principais linguagens para programar nesses dispositivos é Python. Apesar de não conhecer muito a biblioteca Gtk (biblioteca gráfica), conheço a linguagem razoavelmente bem, por isso acreditava que conseguiria implementar o aplicativo no final de semana.

A primeira providência foi procurar documentação. A idéia do projeto já estava toda na minha cabeça mas não sabia por onde começar. Depois de um tempo, encontrei algumas coisas. Foram importantes os seguintes documentos:

  • http://www.pygtk.org/pygtktutorial/
  • http://pymaemo.garage.maemo.org/documentation.html
  • http://gpodder.org/ (seu código-fonte)

A versão do sistema operacional é o OS 2008 (Diablo). O Python 2.5 já estava instalado. De fato, não precisei instalar outra coisa. Algumas documentações diziam que eu tinha de instalar o interpretador da linguagem. Talvez eu tenha feito isso algum tempo atrás.

Outra coisa que ajudou bastante, para ir escrevendo e testando rapidamente, foi acessar via SSH o dispositivo pelo Nautilus (num notebook com Ubuntu). Criei o arquivo da aplicação no cartão do N800 e depois abrir com o editor TextFlow. Daí era só escrever, salvar e ir no PDA executar a aplicação.

O cliente e servidor do SSH não vem instalado por default no N800. Nem o terminal. Por ele é que eu rodava o Python. Pelo notebook, eu usava também um terminal para acessar o N800 via ssh. Era útil para testar algumas coisas no interpretador interativo do Python.

As próximas tarefas envolvem melhorar o aspecto visual da aplicação e preparar um instalador para ficar mais fácil de dispobilizar. O código-fonte encontra-se abaixo:

#!/usr/bin/python2.5

import osso
import gtk
import hildon

def string_jogada(vezes, dado, soma):
    if soma > 0:
        sinal = '+'
    elif soma == 0:
        sinal = ''
    else:
        sinal = '-'
    return '%dd%d%s%s' % (vezes, dado, sinal, abs(soma) or '')

class DiceDnD(hildon.Program):
    def __init__(self):
        self.dado_atual = 0
        self.vezes = 0
        self.soma = 0
        hildon.Program.__init__(self)
        self.window = hildon.Window()
        self.window.set_title('DiceDnd')
        self.window.connect("destroy", self.quit)
        self.add_window(self.window)

        tabela = gtk.Table(5,4,True)
        self.window.add(tabela)

        self.dado4 = gtk.Button('4')
        self.dado6 = gtk.Button('6')
        self.dado8 = gtk.Button('8')
        self.dado10 = gtk.Button('10')
        self.dado12 = gtk.Button('12')
        self.dado20 = gtk.Button('20')
        self.botaoMais = gtk.Button('+')
        self.botaoMenos = gtk.Button('-')
        self.botaoJogar = gtk.Button('Jogar')
        self.frame = gtk.Frame()
        self.montagem = gtk.Label('Jogada')
        self.frame.add(self.montagem)

        tabela.attach(self.dado4,0,1,0,1)
        tabela.attach(self.dado6,1,2,0,1)
        tabela.attach(self.dado8,2,3,0,1)
        tabela.attach(self.dado10,0,1,1,2)
        tabela.attach(self.dado12,1,2,1,2)
        tabela.attach(self.dado20,2,3,1,2)
        tabela.attach(self.botaoMais,0,1,2,3)
        tabela.attach(self.botaoJogar,1,2,2,3)
        tabela.attach(self.botaoMenos,2,3,2,3)
        tabela.attach(self.frame,0, 3, 3, 4)

        self.dado4.connect('clicked',self.preparar,4)
        self.dado6.connect('clicked',self.preparar,6)
        self.dado8.connect('clicked',self.preparar,8)
        self.dado10.connect('clicked',self.preparar,10)
        self.dado12.connect('clicked',self.preparar,12)
        self.dado20.connect('clicked',self.preparar,20)
        self.botaoMais.connect('clicked',self.incrementar,1)
        self.botaoMenos.connect('clicked',self.incrementar,-1)
        self.botaoJogar.connect('clicked',self.mostrar)

        self.window.show_all()

    def mostrar(self, button):
        if self.dado_atual == 0:
            return
        import random
        total = 0
        for i in range(self.vezes):
            total += random.randint(1,self.dado_atual)
        total = total + self.soma
        jogada = string_jogada(self.vezes, self.dado_atual, self.soma)
        self.show_message('%s' % total)

    def preparar(self, button,valor):
        if valor  self.dado_atual:
            self.dado_atual = valor
            self.vezes = 1
            self.soma = 0
        else:
            self.vezes += 1
        self.montagem.set_text(string_jogada(self.vezes, self.dado_atual, self.soma))

    def incrementar(self, button,valor):
        self.soma = self.soma + valor
        self.montagem.set_text(string_jogada(self.vezes, self.dado_atual, self.soma))

    def show_message(self, message):
        dlg = hildon.Note('information', (self.window, message))
        dlg.run()
        dlg.destroy()
        #pango_markup = '%s\n%s' % ('DiceDnD', message)
        #hildon.hildon_banner_show_information_with_markup(gtk.Label(''), None, pango_markup)

    def quit(self, evt):
        gtk.main_quit()

    def run(self):
        gtk.main()

def main():
    prog = DiceDnD()
    prog.run()

if __name__ == "__main__":
    main()

Idéia exploratória

Publicado em desenvolvimento, mobile, python por claudiotorcato em 24 setembro 2009

Uma boa idéia me surgiu agora, útil para o momento e ótima pedida para iniciar a exploração no mundo da programação de dispositivos Nokia que usam o sistema operacional Maemo: um rolador de dados.

Bobo, né? Inclusive, acho que já existe um. Mas é diferente do que eu estou pensando.

Gostaria que a tela do aplicativo mostrasse um quadrado com todos os tipos de dados usados no RPG D&D ou seja, os de 4, 6, 8, 10, 12 e 20 faces. E mais três botões: para o sinal de mais, o de menos e o de igual.

Ao apertar um dos dados ele saberá que quero jogar com ele. Ele esperará eu apertar no sinal de igual para a operação randômica executar. Os sinais servem para aumentar ou diminuir o que resultar do dado. Cada vez que eu apertar num deles incrementa-se ou descrementa-se em um.

Logicamente vou escrever esse aplicativo em Python. Vamos ver se tenho a sorte e produtividade de terminá-lo ainda neste final de semana. Quando concluir, posto por aqui.

Da prática para a especulação

Publicado em Uncategorized por claudiotorcato em 4 agosto 2009

Especulam se haverá aumento da compra de imóveis ao longo dos próximos anos. Vamos citar exemplos práticos. Sei de várias pessoas próximas a mim que estão planejando comprar um imóvel (casa ou apartamento), neste ano ou no próximo ano. E grande parte deles não é sequer o foco do badalado Minha Casa, Minha Vida.

O problema em Teresina, não sei em outros lugares, é o aumento do preço dos imóveis. Uma parte considera os preços propostos muito irreal. Resta saber se nos meses que se seguem ou mesmo em 2010 os preços começam a baixar.

Socialismo fracassou, capitalismo quebrou: o que vem a seguir?

Publicado em Uncategorized por claudiotorcato em 16 abril 2009

Esse artigo eu encontrei no site do Paulo Henrique Amorim, o Conversa Afiada. Comenta um assunto que eu já venho lendo e notando em diversos lugares da Internet. É uma nova forma de ver o mercado e o rumo da política.

A prova de uma política progressista não é privada, mas sim pública. A prioridade não é o aumento do lucro e do consumo, mas sim a ampliação das oportunidades e, como diz Amartya Sen, das capacidades de todos por meio da ação coletiva. Isso significa iniciativa pública não baseada na busca de lucro. Decisões públicas dirigidas a melhorias sociais coletivas com as quais todos sairiam ganhando. Esta é a base de uma política progressista, não a maximização do crescimento econômico e da riqueza pessoal. A análise é do historiador britânico Eric Hobsbawm

Eric Hobsbawm – The Guardian Seja qual for o logotipo ideológico que adotemos, o deslocamento do mercado livre para a ação pública deve ser maior do que os políticos imaginam. O século XX já ficou para trás, mas ainda não aprendemos a viver no século XXI, ou ao menos pensá-lo de um modo apropriado. Não deveria ser tão difícil como parece, dado que a idéia básica que dominou a economia e a política no século passado desapareceu, claramente, pelo sumidouro da história. O que tínhamos era um modo de pensar as modernas economias industriais – em realidade todas as economias -, em termos de dois opostos mutuamente excludentes: capitalismo ou socialismo.

Conhecemos duas tentativas práticas de realizar ambos sistemas em sua forma pura: por um lado, as economias de planificação estatal, centralizadas, de tipo soviético; por outro, a economia capitalista de livre mercado isenta de qualquer restrição e controle. As primeiras vieram abaixo na década de 1980, e com elas os sistemas políticos comunistas europeus; a segunda está se decompondo diante de nossos olhos na maior crise do capitalismo global desde a década de 1930. Em alguns aspectos, é uma crise de maior envergadura do que aquela, na medida em que a globalização da economia não estava então tão desenvolvida como hoje e a economia planificada da União Soviética não foi afetada. Não conhecemos a gravidade e a duração da atual crise, mas sem dúvida ela vai marcar o final do tipo de capitalismo de livre mercado iniciado com Margareth Thatcher e Ronald Reagan.

A impotência, por conseguinte, ameaça tanto os que acreditam em um capitalismo de mercado, puro e desestatizado, uma espécie de anarquismo burguês, quanto os que crêem em um socialismo planificado e descontaminado da busca por lucros. Ambos estão quebrados. O futuro, como o presente e o passado, pertence às economias mistas nas quais o público e o privado estejam mutuamente vinculados de uma ou outra maneira. Mas como? Este é o problema que está colocado diante de nós hoje, em particular para a gente de esquerda.

Ninguém pensa seriamente em regressar aos sistemas socialistas de tipo soviético, não só por suas deficiências políticas, mas também pela crescente indolência e ineficiência de suas economias, ainda que isso não deva nos levar a subestimar seus impressionantes êxitos sociais e educacionais. Por outro lado, até a implosão do mercado livre global no ano passado, inclusive os partidos social-democratas e moderados de esquerda dos países do capitalismo do Norte e da Australásia estavam comprometidos mais e mais com o êxito do capitalismo de livre mercado.

Efetivamente, desde o momento da queda da URSS até hoje não recordo nenhum partido ou líder que denunciasse o capitalismo como algo inaceitável. E nenhum esteve tão ligado a sua sorte como o New Labour, o novo trabalhismo britânico. Em suas políticas econômicas, tanto Tony Blair como Gordon Brown (este até outubro de 2008) podiam ser qualificados sem nenhum exagero como Thatchers com calças. O mesmo se aplica ao Partido Democrata, nos Estados Unidos.

A idéia básica do novo trabalhismo, desde 1950, era que o socialismo era desnecessário e que se podia confiar no sistema capitalista para fazer florescer e gerar mais riqueza do que em qualquer outro sistema. Tudo o que os socialistas tinham que fazer era garantir uma distribuição eqüitativa. Mas, desde 1970, o acelerado crescimento da globalização dificultou e atingiu fatalmente a base tradicional do Partido Trabalhista britânico e, em realidade, as políticas de ajudas e apoios de qualquer partido social democrata. Muitas pessoas, na década de 1980, consideraram que se o barco do trabalhismo não queria ir a pique, o que era uma possibilidade real, tinha que ser objeto de uma atualização.

Mas não foi. Sob o impacto do que considerou a revitalização econômica thatcherista, o New Labour, a partir de 1997, engoliu inteira a ideologia, ou melhor, a teologia, do fundamentalismo do mercado livre global. O Reino Unido desregulamentou seus mercados, vendeu suas indústrias a quem pagou mais, deixou de fabricar produtos para a exportação (ao contrário do que fizeram Alemanha, França e Suíça) e apostou todo seu dinheiro em sua conversão a centro mundial dos serviços financeiros, tornando-se também um paraíso de bilionários lavadores de dinheiro. Assim, o impacto atual da crise mundial sobre a libra e a economia britânica será provavelmente o mais catastrófico de todas as economias ocidentais e o com a recuperação mais difícil também.

É possível afirmar que tudo isso já são águas passadas. Que somos livres para regressar à economia mista e que a velha caixa de ferramentas trabalhista está aí a nossa disposição – inclusive a nacionalização -, de modo que tudo o que precisamos fazer é utilizar de novo essas ferramentas que o New Labour nunca deixou de usar. No entanto, essa idéia sugere que sabemos o que fazer com as ferramentas. Mas não é assim.

Por um lado, não sabemos como superar a crise atual. Não há ninguém, nem os governos, nem os bancos centrais, nem as instituições financeiras mundiais que saiba o que fazer: todos estão como um cego que tenta sair do labirinto tateando as paredes com todo tipo de bastões na esperança de encontrar o caminho da saída.

Por outro lado, subestimamos o persistente grau de dependência dos governos e dos responsáveis pelas políticas às receitas do livre mercado, que tanto prazer lhes proporcionaram durante décadas. Por acaso se livraram do pressuposto básico de que a empresa privada voltada ao lucro é sempre o melhor e mais eficaz meio de fazer as coisas? Ou de que a organização e a contabilidade empresariais deveriam ser os modelos inclusive da função pública, da educação e da pesquisa? Ou de que o crescente abismo entre os bilionários e o resto da população não é tão importante, uma vez que todos os demais – exceto uma minoria de pobres – estejam um pouquinho melhor? Ou de que o que um país necessita, em qualquer caso, é um máximo de crescimento econômico e de competitividade comercial? Não creio que tenham superado tudo isso.

No entanto, uma política progressista requer algo mais que uma ruptura um pouco maior com os pressupostos econômicos e morais dos últimos 30 anos. Requer um regresso à convicção de que o crescimento econômico e a abundância que comporta são um meio, não um fim. Os fins são os efeitos que têm sobre as vidas, as possibilidades vitais e as expectativas das pessoas.

Tomemos o caso de Londres. É evidente que importa a todos nós que a economia de Londres floresça. Mas a prova de fogo da enorme riqueza gerada em algumas partes da capital não é que tenha contribuído com 20 ou 30% do PIB britânico, mas sim como afetou a vida de milhões de pessoas que ali vivem e trabalham. A que tipo de vida têm direito? Podem se permitir a viver ali? Se não podem, não é nenhuma compensação que Londres seja um paraíso dos muito ricos. Podem conseguir empregos remunerados decentemente ou qualquer tipo de emprego? Se não podem, de que serve jactar-se de ter restaurantes de três estrelas Michelin, com alguns chefs convertidos eles mesmos em estrelas. Podem levar seus filhos à escola? A falta de escolas adequadas não é compensada pelo fato de que as universidades de Londres podem montar uma equipe de futebol com seus professores ganhadores de prêmios Nobel.

A prova de uma política progressista não é privada, mas sim pública. Não importa só o aumento do lucro e do consumo dos particulares, mas sim a ampliação das oportunidades e, como diz Amartya Sen, das capacidades de todos por meio da ação coletiva. Mas isso significa – ou deveria significar – iniciativa pública não baseada na busca de lucro, sequer para redistribuir a acumulação privada. Decisões públicas dirigidas a conseguir melhorias sociais coletivas com as quais todos sairiam ganhando. Esta é a base de uma política progressista, não a maximização do crescimento econômico e da riqueza pessoal.

Em nenhum âmbito isso será mais importante do que na luta contra o maior problema com que nos enfrentamos neste século: a crise do meio ambiente. Seja qual for o logotipo ideológico que adotemos, significará um deslocamento de grande alcance, do livre mercado para a ação pública, uma mudança maior do que a proposta pelo governo britânico. E, levando em conta a gravidade da crise econômica, deveria ser um deslocamento rápido. O tempo não está do nosso lado.

Artigo publicado originalmente no jornal The Guardian.

Tradução do inglês para o espanhol: S. Segui, integrante dos coletivos Tlaxcala, Rebelión e Cubadebate.

Tradução do espanhol para o português: Katarina Peixoto

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.