William OS
Privacidade e medição
Eu trabalho com mensuração. Seria estranho esconder a minha.
Esta página lista o que este site mede, o que ele envia para fora e o que ele grava no seu navegador. Cada item vem com o arquivo e o trecho exato de código, para você poder conferir em vez de acreditar.
Uso o trecho e não o número da linha de propósito: linha muda quando o código muda, e uma referência errada seria pior do que nenhuma. O trecho você acha com Ctrl+F.
O que o site mede
A página inicial carrega o Google Tag Manager pelo contêiner GTM-P9L4LHVF, declarado no <head> de index.html. Toda a medição própria do sistema passa por uma única função, function trackEvent(eventName), em assets/js/william-os.js, que empurra um objeto para o dataLayer.
São onze eventos. Só onze.
| Evento | Quando dispara | Procure por |
|---|---|---|
abriu_apresentacao |
Ao abrir a janela Apresentação | trackEvent("abriu_apresentacao") |
abriu_curriculo |
Ao abrir a janela Currículo | trackEvent("abriu_curriculo") |
abriu_portfolio |
Ao abrir a janela Portfólio | trackEvent("abriu_portfolio") |
abriu_terminal |
Ao abrir a janela Terminal | trackEvent("abriu_terminal") |
abriu_dia_do_gato |
Ao abrir o Dia Internacional do Gato pela busca da barra de tarefas | trackEvent("abriu_dia_do_gato") |
abriu_willnamp |
Ao abrir o tocador WillNamp | trackEvent("abriu_willnamp") |
abriu_lixeira |
Ao abrir a janela da Lixeira | trackEvent("abriu_lixeira") |
abriu_privacidade |
Ao abrir esta janela | trackEvent("abriu_privacidade") |
abriu_analytics |
Ao abrir o Analytics | trackEvent("abriu_analytics") |
abriu_case_001 |
Ao abrir o dossiê CASE_001 | trackEvent("abriu_case_001") |
abriu_arcade |
Ao abrir o Arcade | trackEvent("abriu_arcade") |
Todos em assets/js/william-os.js. Os onze disparam uma vez por abertura — reabrir uma janela minimizada não redispara. Sim, ler esta página é medido: seria incoerente esconder justamente esse.
O Analytics faz o caminho inverso: em vez de enviar, ele lê. Ao abrir, ele busca data/analytics.json neste mesmo domínio — nenhum terceiro, nenhuma chave, nenhuma chamada ao Google a partir do seu navegador. Esse arquivo é publicado uma vez por dia por uma rotina que consulta o Google Analytics pela Data API fora daqui, e contém só agregado: totais por dia, por dispositivo, por origem e por página, com a query string das URLs removida antes da soma. Não há nada individual nele, e você pode abrir o arquivo direto e conferir.
O que o site não mede
Esta parte é tão importante quanto a de cima, e quase nenhum site publica.
Os onze eventos vão para o dataLayer sem nenhum parâmetro além do nome. Não há identificador de visitante próprio, não há dado pessoal e não há conteúdo do que você leu.
Não existe medição de qual slide você alcançou, quanto do Currículo você rolou, se você baixou o PDF, quanto tempo a janela ficou aberta ou se você concluiu a abertura do sistema.
O Tag Manager está instalado apenas na página inicial. Quem chega direto em terminal.html, apps/curriculo/ ou nesta página não é medido de forma nenhuma.
Newsletter: o único dado que você me envia
O ícone Newsletter abre um formulário com um campo de e-mail. Se você preencher e enviar, esse e-mail sai do seu navegador.
O destino é um Google Apps Script meu, que grava em uma planilha do Google Sheets. O corpo do envio tem exatamente dois campos: o e-mail digitado e uma origem fixa, william-os. A chamada vai com credentials: 'omit' e referrerPolicy: 'no-referrer', então não acompanha cookie nem a página de origem.
O endereço completo do endpoint está visível no JavaScript servido em apps/newsletter/assets/, publicamente. O nome do arquivo carrega um código que muda a cada versão, para o seu navegador nunca ficar preso a uma cópia antiga. Não é segredo e não tenho como fingir que é.
WillNamp: sem terceiro nenhum
O aplicativo WillNamp é um tocador com a cara do Winamp. Os arquivos de áudio são servidos pelo próprio site, de assets/audio/. Não há player embutido de Spotify, YouTube, SoundCloud ou de quem quer que seja.
Na prática isso significa que abrir o WillNamp não carrega script de nenhum outro domínio e não deixa ninguém de fora saber que você abriu, além do que o próprio servidor deste site já registra ao entregar qualquer arquivo.
Eu cheguei aqui depois de testar três serviços e descartar os três: o Spotify entregava trinta segundos para quem não está logado e não deixava controlar volume; o YouTube recusou as faixas com erro 150, porque a gravadora não permite reprodução fora de lá; o SoundCloud funcionava, mas injeta anúncio por cima do próprio player. Nenhum deles permitia esconder o player de terceiro, e com razão — quem embute um player aceita as regras de quem o fez.
Eu não guardo o que você ouviu, não gravo histórico de reprodução e não mando essa informação para lugar nenhum.
O contador do Dia Internacional do Gato
Dentro do Dia Internacional do Gato existe um contador de visitas em odômetro verde, no estilo de 1999. Ele é real: o número que aparece ali é a contagem de verdade, não um enfeite sorteado.
Isso significa uma requisição saindo do seu navegador — a segunda coisa que sai daqui, depois da Newsletter. Ela acontece só quando você abre esse aplicativo, nunca no carregamento do site, e vai para um Google Apps Script meu, o mesmo tipo de endpoint que a Newsletter usa.
A requisição não leva nada sobre você. É um GET sem corpo, sem identificador, sem cookie e sem página de origem — credentials: 'omit' e referrerPolicy: 'no-referrer'. O que o script guarda é um número inteiro, e nada além dele. Não existe registro de quem, de quando ou de onde.
O que eu não posso esconder: como em qualquer requisição para qualquer servidor, o Google enxerga o seu IP no instante em que ela chega. Eu não vejo isso e não guardo isso, mas ela passa por lá.
A contagem sobe uma vez por sessão do navegador. Abrir e fechar a janela do gato várias vezes não conta de novo — é para isso que existe a chave william-os.catday-contado.v1 na tabela abaixo. Fechar a aba apaga essa marca, e uma visita nova conta outra vez.
Se a requisição falhar, o odômetro mostra traços e assume que quebrou. Ele nunca inventa um número.
O endereço do endpoint está visível em apps/gato/index.html, servido publicamente, como o da Newsletter. E, como qualquer contador público da internet, ele pode ser inflado por quem tiver vontade de ficar chamando o endereço. Trate o número como enfeite honesto, não como métrica.
O que fica gravado no seu navegador
O sistema guarda estado para parecer um computador de verdade: janela onde você deixou, ícone onde você arrastou. Nada disso sai do seu navegador nem é enviado para mim.
| Chave | Guarda | Dura |
|---|---|---|
william-os.window-state.v1 |
Posição e tamanho de cada janela | Permanente |
william-os.desktop-icon-layout.v1 |
Onde cada ícone foi solto na área de trabalho | Permanente |
william-os.desktop-pet-position.v1 |
Onde a Panqueca ficou | Permanente |
william-os.panqueca-memory.v1 |
O que a Panqueca lembra de você: o nome, se você disser um, quantas visitas você fez, a data da última, quantas vezes interagiu e o quanto ela confia e gosta de você | Permanente |
william-os.boot-completed.v1 |
Que você já assistiu à abertura uma vez | Permanente |
william-os.recycle-bin.v1 |
Atalhos que você jogou na Lixeira, e a Panqueca quando você tenta jogar ela também | Só esta sessão |
william-os.newsletter-completed.v1 |
Que a Newsletter já foi enviada nesta sessão | Só esta sessão |
william-os.catday-contado.v1 |
Que esta sessão já foi somada ao contador do Dia Internacional do Gato | Só esta sessão |
As cinco primeiras usam localStorage e sobrevivem a fechar o navegador. As três últimas usam sessionStorage e somem quando você fecha a aba.
Uma delas pode conter dado pessoal, e eu prefiro dizer isso com todas as letras. A Panqueca conversa, e se você escrever "meu nome é Fulano" na caixa dela, esse primeiro nome fica gravado em william-os.panqueca-memory.v1 para ela te reconhecer numa próxima visita. É o único campo do site que guarda algo que veio de você. Ele nunca sai do seu navegador: não vai para servidor nenhum, não entra em evento de analytics e eu não tenho como ler. Se você não contar seu nome, o campo fica vazio. As demais chaves continuam sendo coordenadas, identificadores e sinalizadores.
Existem ainda chaves que só nascem se você abrir um dos painéis internos de calibração que eu uso para acertar tempo e layout: william-os.boot-timings.v1, layout-panel-slide-02, layout-panel-slide-03 e layout-panel-slide-05. Elas guardam números de animação e posição, não guardam nada sobre você, e um visitante normal nunca as cria. Listo mesmo assim, porque a tabela acima seria incompleta sem elas.
Para apagar todas: abra o console do navegador nesta origem e rode localStorage.clear() e sessionStorage.clear(). Você volta a ser um visitante novo, inclusive na abertura do sistema.
Só a memória da Panqueca: localStorage.removeItem('william-os.panqueca-memory.v1'). Ela esquece seu nome e você vira um estranho de novo.
Sem console também dá: Reiniciar, no menu Iniciar, apaga o layout dos ícones e a Lixeira. As demais chaves permanecem, inclusive o que a Panqueca lembra.
O que eu não consigo afirmar daqui
A configuração interna do contêiner do Google Tag Manager não faz parte deste repositório. Ela vive na conta do GTM, e eu posso mudá-la sem alterar uma linha de código deste site.
Por isso esta página não afirma quais tags, fornecedores, cookies ou destinos estão ativos na versão publicada. O que está aqui é o que o código versionado faz — nada além disso.
Se você quiser conferir o que realmente sai, o caminho é o mesmo que eu usaria: abrir o DevTools na aba Network e olhar as requisições. Eu recomendo.
Controle do visitante
Você pode bloquear scripts e armazenamento de terceiros pelas configurações do navegador ou por extensão de privacidade. O William OS continua funcionando sem eles: a medição não é requisito para nada na interface.
O sistema ainda não tem um painel próprio de preferências de medição. Enquanto não tiver, esta página é o que eu tenho para oferecer no lugar.
Contato
Dúvidas sobre privacidade ou medição, ou correções nesta página:
fotografiaferreira@gmail.comAtualizado em 7 de agosto de 2026.