Feeds:
Posts
Comments

isn’t it a pity?

Isn’t it a pity
Now, isn’t it a shame
How we break each other’s hearts
And cause each other pain
How we take each other’s love
Without thinking anymore
Forgetting to give back
Isn’t it a pity

Some things take so long
But how do I explain
When not too many people
Can see we’re all the same
And because of all their tears
Their eyes can’t hope to see
The beauty that surrounds them
Isn’t it a pity

Isn’t it a pity
Isn’t is a shame
How we break each other’s hearts
And cause each other pain
How we take each other’s love
Without thinking anymore
Forgetting to give back
Isn’t it a pity

Forgetting to give back
Isn’t it a pity
Forgetting to give back
Now, isn’t it a pity

George Harrison

realismo vs idealismo

A maioria das pessoas vive de forma a maximizar benefício próprio, seguindo um conjunto flexível de regras morais e/ou boa conduta. Por exemplo, um pai de família que se vê como uma pessoa honesta procura conseguir o máximo de dinheiro e recursos para si e sua família (com razão, claro), mas pode por ventura procurar sempre comprar produtos importados ilegalmente, sem pagar o imposto devido na alfândega. Esse comportamento aumenta os recursos que ele pode disponibilizar para sua família, e pode ser racionalizado de várias formas (“não concordo com a quantidade absurda de impostos atual”, “o governo vai roubar/utilizar mal mesmo”, “sou apenas uma gota no oceano”, etc.). Eu vejo alguns problemas nessa atitude.

Em primeiro lugar, cada uma das formas de racionalização que eu citei são males que devem ser combatidos pela raiz, e não contornados. Não concorda com a quantidade de imposto cobrada? Pressione seu representante legislativo para atuar sobre o assunto. Acredita que o governo é corrupto? Busque conhecer melhor as contas do governo (tarefa gigante, claro. Mas você pode participar de uma das várias ONGs que fazem isso.) e assim por diante. Eu acredito que é sempre melhor solucionar o problema pela raiz do que contorná-lo (para valores altos mas não absolutos de “sempre”, eu acho).

Além disso, a situação usada como exemplo gera problemas sociais por si só: mentalidade de que “roubar só um pouquinho não tem problema” (e por acaso sonegar não é um crime? Se não concorda que deva ser um crime, pressione seu legislador.), financiamento de uma cadeia produtiva criminosa (o famoso “esse dinheiro vai pro tráfico”), diminuição do dinheiro total disponível para o governo investir de volta na sociedade (de novo, se investe mal isso é outro problema, a solução para ele é outra). E isso leva, no nível macroscópico, a um mundo percebido como injusto: na média todos fazem algo que prejudica alguém em maior ou menor grau, e todos sofrem com algo feito pelos outros. Exemplos: sonegar imposto, furar fila, comprar filmes e jogos piratas, dirigir bêbado.

Gradações cada vez maiores de flexibilidade moral fazem a ponte entre os “cidadãos de bem” e as pessoas realmente sem escrúpulos. Fazem a ponte tanto no sentido de ficar no meio da escala, quanto em ajudar estas últimas a se integrarem na sociedade. Afinal de contas, como um líder do tráfico ou de um mega-esquema de corrupção ativa no governo consegue os serviços (mesmo que prosaicos) de que precisa para tocar seu negócio? Para funcionar, esse negócio precisa de pessoas especializadas que prestam serviços em determinadas áreas, e que muitas vezes fazem vista grossa e sabem para quem estão trabalhando (apesar de racionalizarem a questão e se considerarem apenas profissionais imparciais). É o caso de contadores e advogados especialistas em lavagem de dinheiro, “maquiagem contábil” etc. Também é o caso de governos (e até mesmo populações) de paraísos fiscais (inclusive a Suíça).

Em contrapartida, pessoas idealistas (ou seja, que se apegam firmemente a princípios norteadores bem definidos) tendem a gerar algum atrito com as pessoas moralmente flexíveis (qualquer nível em que estas últimas estejam na escala moral). Isso pode fazer com que sejam mal-vistas por uns, mas em compensação são respeitadas em suas opiniões por outros. Algumas dessas pessoas possuem personalidade forte o suficiente para desencadear transformações profundas nas pessoas ao seu redor e na sociedade. Ex: Mahatma Ghandi, Martin Luther King Jr, Mário Juruna e outros (até mesmo Richard Stallman, devo admitir). As pessoas que chamo de “moralmente flexíveis” não desencadeiam transformações nas pessoas ao seu redor, muito menos na sociedade. Creio que em nível macroscópico, se as pessoas idealistas fossem maioria na sociedade ao invés dos ditos “cidadãos de bem” que são maioria hoje, haveria no geral um mundo percebido como justo, com pessoas mais participativas nas questões de justiça social.

Acho que no fundo meu ponto é: se você quer ter uma chance de causar impacto positivo nas pessoas ao seu redor e possivelmente na sociedade, deve conhecer e escolher bem seus princípios norteadores e se apegar a eles doa a quem doer, custe o que custar. Isso foi uma lição muito boa que eu aprendi quando era cristão e busco seguir até hoje. E é exatamente essa característica do cristianismo (e creio que também de outras religiões) que faz com que seja difícil encontrar alguém que tenta de verdade praticar sua religião (mesmo procurando em grupos religiosos).

É a escolha entre ser mediano e inexpressivo ou fazer a diferença e se destacar, influenciar. Vale notar que todos somos medianos em alguns aspectos e acima da média em outros. Não dá para se destacar em tudo. Existem coisas que não nos são tão importantes a ponto de estarmos dispostos a nos apegar firmemente a elas. Mas certamente existem algumas coisas que são. O ponto é: refletir e escolher o que é importante para você e fazer a diferença nessas áreas.

Por último gostaria de mencionar que forte apego a princípios norteadores não implica em falta de abertura para ouvir e até ser convencido por outros pontos de vista. Gosto de discussões honestas, e uma discussão honesta tem como pré-requisito que as duas partes estejam dispostas a ser convencidas de que estão erradas, pelo menos em parte. Do contrário, a discussão é perda de tempo. Ficarei feliz de continuar discutindo essas questões nos comentários do blog, caso alguém se interesse.

Agradeço aqui às pessoas que revisaram meu artigo e contribuiram suas opiniões a respeito!

beware of darkness

Watch out now, take care
Beware of falling swingers
Dropping all around you
The pain that often mingles
In your fingertips
Beware of darkness

Watch out now, take care
Beware of the thoughts that linger
Winding up inside your head
The hopelessness around you
In the dead of night

Beware of sadness
It can hit you
It can hurt you
Make you sore and what is more
That is not what you are here for

Watch out now, take care
Beware of soft shoe shufflers
Dancing down the sidewalks
As each unconscious sufferer
Wanders aimlessly
Beware of maya

Watch out now, take care
Beware of greedy leaders
They take you where you should not go
While weeping atlas cedars
They just want to grow, grow and grow
Beware of darkness (beware of darkness)

George Harrison

buscas curiosas

O WordPress tem um painel muito bom, e uma das seções dele informa quais termos de busca foram usados para as pessoas encontrarem seu blog.

Faz exatamente um ano, comecei a coletar os que mais me chamaram a atenção (geralmente por serem engraçados).

Eis a lista, em ordem cronológica:

  • historia dos the commits
  • haha
  • temperatura geladeiras de cerveja
  • bug de flores
  • versinhos fofos
  • a musica do hino nacional em quadrinho
  • versos determinados.
  • cerveja
  • versinhos em alemão
  • das site auf deutsch
  • super mustache
  • blog nerd
  • ele lutou até o fim
  • images made in photoshop
  • bunny avançado
  • biçicletas 2 lugares
  • documentos necessários para vender sabão
  • baik de cinco lugares
  • flintstones alta resolução
  • tucano de frente
  • fotos de mecanico consertando o carro
  • textosobrecriseeconomicamundialde2009
  • caixas de sabao diferentes
  • onde achar forma para sabão
  • coisas que ten na bicicleta
  • bauermann na alemanha
  • fotos de papagaios em alta resolução
  • gdb для python

king of pain

There’s a little black spot on the sun today
It’s the same old thing as yesterday
There’s a black hat caught in a high tree top
There’s a flag pole rag and the wind won’t stop

I have stood here before inside the pouring rain
With the world turning circles running round my brain
I guess I’m always hoping that you’ll end this reign
But it’s my destiny to be the king of pain

There’s a little black spot on the sun today
That’s my soul up there
It’s the same old thing as yesterday
That’s my soul up there
There’s a black hat caught in a high tree top
That’s my soul up there
There’s a flag pole rag and the wind wont stop
That’s my soul up there

I have stood here before inside the pouring rain
With the world turning circles running round my brain
I guess I’m always hoping that you’ll end this reign
But it’s my destiny to be the king of pain

There’s a fossil that’s trapped in a high cliff wall
That’s my soul up there
There’s a dead salmon frozen in a waterfall
That’s my soul up there
There’s a blue whale beached by a springtides ebb
That’s my soul up there
There’s a butterfly trapped in a spider’s web
That’s my soul up there

I have stood here before inside the pouring rain
With the world turning circles running round my brain
I guess I’m always hoping that you’ll end this reign
But it’s my destiny to be the king of pain

There’s a king on a throne with his eyes torn out
There’s a blind man looking for a shadow of doubt
There’s a rich man sleeping on a golden bed
There’s a skeleton choking on a crust of bread

King of pain

There’s a red fox thorn by a huntsman’s pack
That’s my soul up there
There’s a black winged gull with a broken back
That’s my soul up there
There’s a little black spot on the sun today
It’s the same old thing as yesterday

I have stood here before inside the pouring rain
With the world turning circles running round my brain
I guess I’m always hoping that you’ll end this reign
But it’s my destiny to be the king of pain

King of pain
King of pain
King of pain
I’ll always be king of pain
I’ll always be king of pain
I’ll always be king of pain…

Police

crime e castigo

Até que enfim vejo uma medida punindo os criminosos (sim, transformar em pó o dinheiro de aposentadoria e o emprego de pessoas inocentes é crime na minha concepção) pela crise do mercado (ou circo) financeiro:

A lógica dessa operação é objetiva. Uma empresa é um ativo nacional e vale mais em operação do que fechada. Funcionando, além dos ativos a GM tem marca, tecnologia, operação de vendas, de marketing, pessoal estruturado, sistemas de financiamento de vendas, relação com subsidiárias em outros países. Fechada, será apenas um amontoado de imóveis e equipamentos.

Por isso preserva-se a empresa, parte dos empregos, dos fornecedores, o know how acumulado, e penalizam-se apenas os acionistas e os gestores.

Se bem que tem certas coisas que não mudam nunca:

Além disso, os governos dos EUA e do Canadá puderam condicionar sua ajuda à redução de uma série de custos, incluindo os trabalhistas. Houve negociação que transferiu parte das ações aos sindicatos em troca de abrir mão de alguns direitos.

status update on GDB work

Ok, so this time I won’t talk about Python scripting support in GDB. I’m getting tired of it myself. :-) I’ll just comment that it’s amazing the number of problems people in IRC report with GDB that can be solved with the Python support that we’re adding to it. Sometimes they need stuff which is only on the branch, but sometimes even the few bits already in CVS HEAD are enough!

Er, I actually do have one more thing to say about the subject: GDB had one project accepted in the Google Summer of Code 2009. Oguz Kayral is the student working on it, and I am his mentor. He will add support for subscribing to inferior events (e.g., signals, process and thread stops, thread creation) from Python. One use case for which this is useful was given by an IRC user at the #gdb channel:

<LimCore> how to run gdb from command line, so that it will run ./foo.bin with arguments: foo bar baz and it will run it instantly without waiting for ‘r’; And if program segfaults then it will do ‘bt’ without waiting for the command. (and if program terminates normally then it will also just quit)

LimCore will be able to write a simple and short Python script using the events API to solve his problem.

Now, moving on to other items: my team has been asked to improve GDB support for the hardware debug facilities in embedded PowerPC processors (for more info about these facilities, see Chapter 10 of Book III-E of the Power ISA v2.06). I announced this work to the GDB mailing list back in early March, and got useful insight from Joel Brobecker.

Today I posted an update on where we are with this work. We have the following ready for both native GDB and gdbserver on Linux:

  • one additional hardware watchpoint (two in total),
  • four hardware breakpoints,
  • one ranged hardware watchpoint.

And we still have the following features ahead of us:

  • support for the two DVC (Data Value Compare) registers, which enable hardware-accelerated conditions for hardware watchpoints,
  • two ranged hardware breakpoints.

Last and least, I was thinking of posting monthly GDB updates on what happened in GDB in the previous month as I did back in February, but I got busy and didn’t get around to it. I still entertain the idea though, so if you think it’s worth it, I’d be glad to know.

It’s been a while since I last talked about Python scripting support in GDB. Mostly because I’ve been focusing on getting stuff from the branch merged into CVS HEAD, so that GDB 7.0 can have some useful Python bindings.

The latest two patches committed upstream are for creating convenience functions in Python, and fo manipulating a program’s stack frames as Python objects. So, what can you do with those? I’ll borrow an example from Tom Tromey here: suppose you want to set a breakpoint which triggers only when the code is called by one specific function. You can create a convenience function like this:

import gdb
import re

class CallerIs (gdb.Function):
    """Return True if the calling function's name is equal to a string.
This function takes one or two arguments.
The first argument is the name of a function; if the calling function's
name is equal to this argument, this function returns True.
The optional second argument tells this function how many stack frames
to traverse to find the calling function.  The default is 1."""

    def __init__ (self):
        super (CallerIs, self).__init__ ("caller_is")

    def invoke (self, name, nframes = 1):
        frame = gdb.selected_frame ()
        while nframes > 0:
            frame = frame.older ()
            nframes = nframes - 1
        return frame.name () == name.string ()

CallerIs ()

And then create a conditional breakpoint using it, as in:

(gdb) break foo.c:42 if $caller_is ("some_function")

Or, to check the name of the grand-grand-caller of the code:

(gdb) break foo.c:42 if $caller_is ("some_function", 3)

Cool, huh? Now, why bother writing that big doc comment? GDB will use it as online help for the function you wrote:

(gdb) help function caller_is
Return True if the calling function's name is equal to a string.
This function takes one or two arguments.
The first argument is the name of a function; if the calling function's
name is equal to this argument, this function returns True.
The optional second argument tells this function how many stack frames
to traverse to find the calling function.  The default is 1.

One other patch which was merged in HEAD enables creating new GDB commands in Python, so you can write new commands to do some frame tricks too!

If you’d like to know more about the Python scripting work in GDB, I suggest you read the series of blog posts from Tom Tromey on this subject. It’ll give you a pretty good idea of what we have in the Python branch, and the direction we’re heading. Just keep in mind that some method names and syntax changed since he wrote that. Refer to the GDB manual in the Python branch (“make gdb.pdf” in gdb/doc/) or the example scripts (also in the Python branch, in gdb/python/lib/gdb/) for up-to-date details.

a falida imprensa brasileira

Hoje no twitter um tal de Instituto Millenium começou a me seguir. Ainda não manjo muito de twitter, mas já deu pra perceber que certas pessoas e instituições ficam seguindo pessoas ao léu como forma de se promover ou propagandear de forma não solicitada (i.e., spam). Mas não é esse ponto que quero destrinchar agora.

Enfim, eu fiquei curioso pra saber o que é esse tal instituto (pois é, infelizmente spam funciona). Fui no website, li algumas seções da parte institucional. Dizem na seção “Quem somos”:

O Instituto Millenium é uma organização sem fins lucrativos, sem vinculação político-partidária, que promove valores fundamentais para a prosperidade e o desenvolvimento humano da sociedade brasileira.

E na seção “Carta de Princípios”:

O Instituto Millenium é uma associação de fins não econômicos, sem fins lucrativos, que será enquadrada sob a lei das Organizações da Sociedade Civil de Interesse Público (OSCIP), independente de qualquer grupo político, religioso, empresarial ou governamental, mantida por doações de indivíduos, fundações ou empresas.

[...]

O Instituto Millenium não aceita contribuições que impliquem posicionamento predeterminado diante de qualquer tema ou outro procedimento que de alguma forma comprometa a integridade intelectual de seus trabalhos.

Os destaques em negrito são meus, não do texto original. Parece muito bom e muito bonito, um grupo de pessoas imparciais tentando promover mudanças na sociedade. Só que tem dois problemas aí. Um deles você percebe quando começa a ver a lista de membros e diretores do instituto. Tem dois ex-presidentes do Banco Central, dois altos executivos da Globo, três ou quatro presidentes ou sócios de grandes bancos privados, três ou quatro jornalistas  ou ex-jornalistas da Rede Globo, o presidente do Grupo Gerdau, o presidente do Grupo Abril, e por aí vai.

Ou seja, eles estão nos chamando de idiotas ao se apresentarem como um grupo sem vinculação política. É óbvio que representam um segmento bastante específico da sociedade, com muito poder e articulação política.

O outro problema é sistêmico no jornalismo brasileiro: apresentar-se como neutro e isento, quando na realidade isso não existe em grupo nenhum, em lugar nenhum. Qual o problema de dizer claramente que sua linha editorial defende uma orientação política X? Isso é comum nos EUA e em outros países. Ao invés disso, aqui existe essa palhaçada.

Isso é só mais uma instância que confirma o que venho reparando a muito tempo, e que estava planejando abordar neste blog: o jornalismo no Brasil não cumpre sua função social, que é de informar a sociedade sobre questões importantes da atualidade de tal forma que dê embasamento às pessoas a formarem sua própria opinião a respeito dessas questões. Não é necessário ser imparcial para isso (até por que é impossível sê-lo nas questões mais importantes), basta deixar claro qual a linha editorial do veículo de comunicação para que as pessoas possam ponderar o que está sendo veiculado.

Ao invés disso, o jornalismo brasileiro deturpa e filtra propositadamente o que divulga, com objetivos claros e bem definidos que beneficiam o setor da sociedade que representam, ao mesmo tempo em que se pintam de cordeiros e bastiões da justiça e imparcialidade.

Sinceramente, se você está lendo este texto e estuda ou trabalha na área de jornalismo, deveria em primeiro lugar sentir vergonha de seus colegas, que criaram e mantêm essa lama. Em segundo lugar, deveria orientar sua carreira de forma a combater essa situação.

Se você mora em Campinas, aqui vai uma boa dica: a brito serviços e autopeças fica aberta até as 22h de segunda a sábado, e “só” até as 18hs no domingo. Fala sério!

Eles trabalham com parte elétrica, mecânica, lataria e pintura. Quem me indicou disse que no que se refere à parte elétrica, eles são muito bons. Eu mesmo não tenho elementos suficientes pra dizer. Também não sei como eles são na parte mecânica.

Fica na João Jorge. Na direção de quem vai para a rótula, é um pouco depois (e do outro lado da rua) do mega-templo da universal que tem lá. Fone: 3272-6357.

Older Posts »

Follow

Get every new post delivered to your Inbox.