;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Alicia Klein

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

As semelhanças (e a diferença crucial) entre a Ministra Anielle Franco e eu

26/01/2023 10h15

Receba os novos posts desta coluna no seu e-mail

Email inválido

Enquanto eu conversava com a Ministra da Igualdade Racial, Anielle Franco, para o UOL Entrevista — nosso papo já está no ar, neste link —, só conseguia pensar no tanto que temos em comum.

Jornalistas não devem nunca se tornar o centro da história, mas juro que a comparação aqui é por um nobre propósito.

Sou de 1983. Ela, de 1984. Ambas com uma relação fortíssima com o esporte. Eu joguei futebol (bem mais ou menos), sendo até aprovada em peneira de clube grande. Ela foi atleta profissional de vôlei (excelente), atuando por alguns dos maiores times do país e ando 12 anos nos Estados Unidos, como bolsista.

Ambas temos mestrado americano e uma boa parte da vida fora do Brasil. Aliás, vale ressaltar que a Ministra tem quatro graduações, três mestrados e é doutoranda da UFRJ.

Eu tenho um filho de 3 anos. Ela, uma menina de 7 e outra de 2 e meio. Ambas mães de pandemia, que surpreendentemente mantiveram alguma sanidade.

Somos jornalistas.

Ambas temos mãe e família nordestina.

Gostamos muito de falar palavrão. Ambas aprendemos a segurar nosso pavio curto com a idade e a experiência de transitar em certos ambientes.

Nós duas damos um valor imenso à nossa autenticidade. Lutamos diariamente para não caber nas caixinhas em que tentam nos enfiar, sempre puxando outras mulheres conosco.

Consigo pensar em várias semelhanças, mas há uma diferença primordial (além do fato óbvio de que ela é Ministra de Estado e eu, uma reles mortal), uma diferença que ditou a dificuldade que encontramos pelo caminho, para chegar onde estamos.

Eu sou branca. Anielle é negra.

Eu nunca precisei pular sobre corpos e cabeças nos bairros em que morei. Não precisei vender salgado e fazer vaquinha para poder ir estudar nos Estados Unidos. Não precisei deixar meu filho na creche da escola às 6h50 para poder trabalhar 12 horas seguidas. Não tive quem duvidasse do meu inglês e da minha competência pela cor da minha pele. Não tive minha irmã assassinada. Não fui cuspida na cara com meu filho no colo e não ouvi que devia morrer também, pelas coisas em que acredito. Não preciso dar um jeito de explicar ao meu moleque por que andamos com segurança em certos lugares, por que às vezes olham para ele estranho na escola, por que não podemos mais circular livremente e por que a madrinha dele não está mais aqui.

Anielle viveu e vive tudo isso. E está lá, na Esplanada dos Ministérios, entre as pessoas mais poderosas do país. Apesar do esforço constante da nossa sociedade racista e misógina para impedir sua ascensão.

É impossível não pensar em quantas pessoas negras acabam ficando pelo caminho. Em quantas descobrem que não basta ser boa, excelente, ou mesmo a melhor entre seus pares, se sua cor ou seu gênero não forem "corretos". Em fazer tudo, apesar de tudo, e não ser suficiente.

Não deveria ser assim. Não deveria haver uma única diferença capaz de determinar destinos de maneira tão brutal.

O desafio é hercúleo e o orçamento, minúsculo. Por isso, é tão importante que Anielle Franco, o Ministério da Igualdade Racial e o movimento negro não lutem sozinhos. Afinal, brancos são os culpados pelo racismo. Cabe a nós combatê-lo e fazer reparações por todo o mal causado durante séculos. É o mínimo.

(Não perca a entrevista! Os assuntos não são leves, mas o papo foi muito gostoso.)

Siga Alicia Klein no Instagram e no Twitter

Leia todas as colunas da Alicia aqui