;(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

Sem WhatsApp a 9 mil km de casa: sobrevivi a apagão e minha mãe quase pirou

Getty Images
Imagem: Getty Images

Lucas Santana

Colaboração para Tilt, em Erfurt (Alemanha)

06/10/2021 04h00

O que seria uma segunda-feira "tranquila" entre despedidas da família e uma viagem de retorno para a cidade em que moro se tornou caótica com o apagão que afetou o WhatsApp, o Instagram e o Facebook ontem (4). A situação foi tão estressante que precisei lidar com a minha mãe angustiada e sem ter dormido por não conseguir contato comigo. E explico o motivo.

ei uma temporada no Brasil por causa da pandemia. Na segunda, viajei para Erfurt, uma cidade pequena no interior da Alemanha, onde faço mestrado. Logo que cheguei no aeroporto de Berlim, avisei família e amigos que eu havia aterrissado. Mas ainda tinha um longo percurso de trem até o destino final. Assim que entrei na composição, percebi que algo estava errado.

Apesar de ter encontrado algumas redes de wi-fi no aeroporto e no trem, meus principais canais de comunicação estavam offline: WhatsApp, Facebook e Instagram. Eu tinha internet, mas não conseguia utilizar os serviços. Para piorar, meu chip brasileiro não funcionava e eu ainda não tinha um cartão SIM local.

O tempo foi ando e comecei a sentir uma angústia pela impossibilidade de me comunicar com a família no Brasil. Quando cheguei em Erfurt, por volta das 20h no horário local (5h à frente do horário de Brasília), perguntei aos meus colegas estrangeiros e alemães se também estavam com problema no WhatsApp e Facebook. Foi quando fiquei sabendo do apagão global.

Lucas Santana com os pais, irmã e sobrinhos na despedida do Brasil - Arquivo pessoal - Arquivo pessoal
Lucas Santana com os pais, irmã e sobrinhos na despedida do Brasil
Imagem: Arquivo pessoal

Entrei na internet pelo meu computador e vi, pelo Twitter, colegas jornalistas de diferentes lugares do mundo relatando a queda das redes do Facebook. Por alguns minutos, achei que fosse exagero. Mas as horas aram e percebi que era muito mais grave do que eu pensava.

Li boatos de que empresas de telecomunicações estavam offline, bancos, de que outros apps, como o Telegram, apresentavam lentidão... Me preocupei até mesmo com minha conta bancária no Brasil. Alguns brincaram que o bug do milênio chegou 21 anos atrasado. Esperei por algumas horas antes de dormir e nada do WhatsApp voltar.

A solução que encontrei para mandar algum sinal de vida para a família foi escrever um email para minha irmã, na esperança de que ela checasse a caixa de entrada em algum momento, à procura de notícias minhas. Mas ela não respondeu. Minha irmã costuma usar o email apenas em horário comercial, no trabalho. Quando enviei a mensagem, ela já estava em final de expediente.

Fui angustiado para a cama. Mas o alívio veio pela manhã: minha irmã finalmente respondeu. Disse que havia avisado nossa mãe ainda ontem à noite que o Facebook tinha caído.

Com o retorno do WhatsApp — dia 5 aqui em Erfurt —, finalmente consegui ligar para minha mãe. Nos falamos por chamada vídeo, e vi no olhar dela a preocupação. Ela tem 59 anos e utiliza a internet apenas no celular, basicamente só para mandar mensagens no WhatsApp, ver fotos de parentes no Facebook e assistir a vídeos no YouTube. Até ontem à noite, nem tinha ideia do apagão.

Muitas vezes, sou eu quem tira dúvidas que ela tem com o celular. Ela até tentou me ligar para saber onde e como eu estava, mas o meu número de telefone estava fora de área de cobertura e eu não tinha um chip alemão ativo. A segunda tentativa foi ligar para minha irmã para saber o que estava acontecendo. Foi aí que ela soube finalmente do problema.

Ela me disse que ou a noite imaginando o que tinha acontecido comigo, se eu tinha conseguido achar minha acomodação, se tinha ado a noite no frio, nas ruas. Mal conseguiu pegar no sono. Imaginando a preocupação dela, também dormi muito mal. Só consegui pegar no sono por conta do cansaço da viagem.

Após a tensão diminuir, vem aquele pensamento do quão inacreditável é concretizar que estamos tão dependentes de serviços privados ligados a apenas uma empresa, um oligopólio de comunicação digital. Não fosse o bom e velho email, minha família não teria nenhuma notícia minha até a volta das redes do Facebook.

Sim, eu daria um jeito de ligar para eles caso os sistemas continuassem indisponíveis. Mas estamos tão condicionados a usá-los que só considerei usar um telefone comum como última hipótese. Além do mais, uma ligação à longa distância custa caro para mim e, muitas vezes, são de má qualidade.

Aplicativos de comunicação instantânea, como o WhatsApp, oferecem custo financeiro zero para ligações, chamadas de vídeo, de áudio. Dá para nos comunicarmos em qualquer lugar do mundo. Esse ponto positivo acaba também nos deixando dependentes desses serviços.

Os sistemas do Facebook voltaram depois de 7h de pane. Deu tempo de eu adormecer pela exaustão, acordar e ver que tudo estava de volta ao normal. Porém, o desespero pelo qual a minha família ou ainda me deixa tenso.