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

Fora da Curva #20: Qual o futuro do design? Profissão impacta de cidades a políticas públicas

10/09/2020 04h00

No quarto episódio da terceira temporada do podcast "Fora da Curva", a empreendedora e criadora de conteúdo Monique Evelle entrevista o designer e pesquisador Douglas Cavendish, professor do IED Brasil (Istituto Europeo di Design). Ouça o programa no arquivo acima.

Os oito episódios da nova temporada estarão disponíveis sempre às quintas-feiras.

Qual o papel do design na nossa sociedade e no futuro? Logo nos primeiros minutos do programa, essa foi a pergunta de Monique a Cavendish. O pesquisador explicou que essa é uma profissão que mudou ao longo do tempo, e que tomou um papel de destaque, sobretudo após a internet e a digitalização.

"O design tem um poder muito interessante de determinar a interface do uso, a jornada do uso. Então, eu diria que hoje o papel do designer é um papel muito mais amplo na sociedade, um papel que realmente está conduzindo o comportamento das pessoas", comentou Cavendish (ouça a partir de 4:27).

A apresentadora também questionou quais os rumos da profissão, para quem já está nessa área. Douglas enxerga o mercado como promissor: além de estar aquecido, o design também tem bons salários, principalmente no setor voltado para o digital.

"É um mercado de alto nível (...) que paga bons salários, um mercado que está ligado diretamente à economia digital (...) São empresas jovens (...) que dialogam com os principais debates da sociedade." (ouça a partir de 5:31).

Cavendish lembrou que o design assumiu um papel de protagonismo principalmente na virada do século, e que esse movimento se fortalece na América Latina desde o começo da década.

"Consolida-se o papel do designer como arquiteto de soluções digitais (...). Nossas relações hoje são basicamente digitais. A gente está falando de um profissional que vai ter um leque de atuação muito amplo (...) ser capaz de desenvolver, inclusive, design de políticas públicas (...) de governos (...) de cidades", defendeu Douglas (ouça a partir de 6:19).

Douglas Cavendish trabalha na área do design estratégico e de service design, leciona a disciplina de tecnologia emergente no Istituto Europeo di Design e é coordenador do curso de extensão em Future Studies na mesma instituição.

Podcasts são programas de áudio que podem ser ouvidos a qualquer hora e lugar — no computador, smartphone ou em outro aparelho com conexão à internet. Os podcasts do UOL estão disponíveis em uol.com.br/podcasts e em todas as plataformas de distribuição. Você pode ouvir "Fora da Curva", por exemplo, no Spotify, na Apple Podcasts e no YouTube.