2 pontos por GN⁺ 2024-11-15 | 1 comentários | Compartilhar no WhatsApp
  • Um quadro E-ink sempre ligado criado para que uma mãe com dificuldade de formar novas memórias de longo prazo pudesse acompanhar continuamente a situação e a agenda da família enquanto mora sozinha
  • O hardware usado foi o BOOX Note Air2 Series; seus recursos de navegador web, página inicial automática, tela sem emissão de luz, aparência doméstica e tamanho legível a alguns metros de distância atendiam aos requisitos
  • O software é dividido em uma página Board para exibição de mensagens e uma página Compose para redação; o Board usa uma estrutura de frame externo e página interna para lidar com falhas de rede e atualizações remotas
  • Os dados são armazenados em um único objeto JSON no JsonStorage; a estrutura é simples: o Compose salva via POST e o Board busca via GET a cada 5 minutos
  • Após a instalação em 12 de novembro de 2022, ajudou na vida real por 2 anos; manter as mensagens atualizadas e exigir pouca interação tornou-se uma condição essencial para reduzir a confusão

A condição da mãe e a necessidade real

  • Em junho de 2022, como efeito colateral de uma longa cirurgia, a mãe passou a ter amnésia anterógrada permanente
    • Ela não consegue mais formar novas memórias de longo prazo
    • Mesmo ao ouvir algo ou ver alguma coisa, em geral não se lembra depois de alguns minutos
  • Para a equipe médica, isso pode parecer semelhante à demência, mas neste caso não é demência
    • A demência é uma doença progressiva, enquanto essa amnésia é uma condição estável
    • Não há tratamento
  • A mãe ainda mora sozinha em seu apartamento e sente continuamente um baixo nível de ansiedade sobre onde os filhos estão e se estão bem
    • Essa ansiedade leva ao comportamento de telefonar ou mandar mensagens para os filhos com muita frequência
  • Os lembretes existentes não permaneciam úteis por muito tempo
    • Anotações em papel desapareciam ou rapidamente viravam informação desatualizada
    • Mesmo quando os filhos telefonavam, 5 minutos depois ela voltava a se preocupar
    • Mensagens de texto, depois de lidas uma vez, não eram revisitadas por rolagem e, na prática, viravam informação desaparecida

Objetivos de design do display

  • O objetivo era ter um dispositivo sempre ligado e discreto instalado no apartamento, onde os filhos pudessem deixar mensagens curtas para a mãe ver continuamente
  • As condições para o display eram as seguintes
    • Poder ficar ligado continuamente por meses
    • Permitir que os filhos publiquem mensagens curtas com facilidade, mantendo-as exibidas até serem substituídas
    • Ser grande e legível o bastante para leitura sem óculos
    • Não exigir interação para acordar ou ler, e não quebrar seu funcionamento ao ser tocado
    • Ser resiliente a falhas de rede
    • Não brilhar à noite
    • Não exigir hacking de hardware
    • Exibir as mensagens logo após inicializar
    • Não depender de serviço por assinatura nem de uma loja de apps proprietária
    • Não ter preço excessivamente alto
    • Não parecer deslocado dentro de casa

Escolha do BOOX Note Air2

  • O dispositivo escolhido por atender aos requisitos foi o BOOX Note Air2 Series
    • Na época, custava US$500, bem mais barato do que telas comerciais para sinalização de varejo
    • Embora seja vendido como dispositivo de escrita e leitor de e-books, possui um navegador web utilizável
    • A tela é grande o bastante para ser lida a alguns metros de distância
  • Antes da compra, a principal incerteza era se seria possível iniciar automaticamente o navegador web e exibir uma página inicial definida
    • Depois que o dispositivo chegou, foi confirmado que ambas as funções eram possíveis
  • A aparência física não parecia exageradamente tecnológica, e a tela E-ink era nítida e fácil de ler
    • A taxa de atualização da tela não era distraente
    • A luz de fundo, que vinha ativada por padrão, podia ser desligada
  • Um pequeno suporte metálico foi usado para posicioná-lo como se fosse um porta-retrato

Estrutura do software web

  • O site é composto por duas páginas
    • Página Board: a tela que mostra as mensagens; quando o dispositivo E-ink inicializa, exibe esta página
    • Página Compose: a tela onde os filhos escrevem e salvam as mensagens
  • A página Board é dividida em um frame externo e uma página interna para execução prolongada, tratamento de falhas e atualizações remotas
    • O frame externo funciona como uma camada leve que envolve a página interna
    • A cada hora cheia, ele recarrega a página interna para refletir possíveis alterações de software
    • Se a rede cair e a página interna não puder ser recarregada, ele tenta novamente uma hora depois
    • Para confiabilidade, o frame externo contém pouquíssima lógica e não possui dependências externas
  • A página interna exibe as mensagens de fato
    • A cada 5 minutos, solicita os dados das mensagens a um serviço web simples
    • Inclui pouca lógica e reduz as dependências tanto quanto possível
  • Como depurar problemas no dispositivo é praticamente difícil, foram usados HTML/CSS vanilla tanto quanto possível
    • Apenas uma pequena quantidade de JavaScript é usada
    • Nenhum framework ou outra biblioteca é usado
  • A página Compose foi criada como um formulário web simples
    • Foi projetada para funcionar bem em telas de celular, permitindo escrever mensagens mesmo fora de casa
    • Por meio de um pequeno manifesto de app web, pode ser salva como ícone na tela inicial do celular
  • O site inteiro é muito pequeno, não tem processo de build e, exceto pela parte de serviço, é composto por arquivos estáticos

Design da tela e tratamento do tamanho do texto

  • Para reduzir a possibilidade de burn-in no E-ink, a página Board muda aleatoriamente a posição onde a mensagem aparece
    • Outros elementos visuais, como data e hora, também alternam entre posições à esquerda e à direita
    • A intenção é evitar que um pixel fique sempre ligado
  • Para dar ao texto do bilhete uma aparência manuscrita, foi usada a fonte Architect’s Daughter
    • Essa fonte funciona bem no display E-ink
    • Para os rótulos, foi usada a Open Sans
  • As mensagens às vezes têm uma ou duas palavras e às vezes várias frases, então era difícil atender a todos os casos com um único tamanho de fonte
    • Não foi encontrada uma forma em CSS puro de maximizar automaticamente o tamanho da fonte sem cortar um elemento de texto com quebra de linha
  • Uma pequena função JavaScript implementa a maximização do tamanho da fonte
    • Oculta o texto com visibility: hidden
    • Tenta exibi-lo começando por um tamanho muito grande
    • Testa tamanhos de fonte cada vez menores até encontrar um em que todo o texto caiba
    • Depois de encontrar um tamanho adequado, torna o texto visível novamente

Serviço de armazenamento de dados e instalação

  • Como os dados a exibir eram apenas uma pequena quantidade de texto, o JsonStorage se encaixava no projeto
    • Um único objeto JSON armazena o texto e os metadados do conjunto atual de mensagens
    • A página Compose salva por meio de requisições POST
    • A página Board busca os dados por meio de requisições GET
  • No início foi usado o plano gratuito, mas depois passou a ser pago o plano básico de US$1 por mês
    • Foi acrescentado que esse plano atualmente parece custar US$5 por mês
  • O software foi criado ao longo de algumas semanas e passou por testes de execução prolongada
    • O display Boox funcionou melhor do que o esperado e parecia permanecer ligado continuamente
  • Em 12 de novembro de 2022, o dispositivo foi levado ao apartamento da mãe e instalado
    • Foi ligado à energia e conectado ao Wi-Fi
    • Foi reiniciado para confirmar que funcionava no novo ambiente
    • Inicialmente, o balcão do banheiro foi considerado, mas a mãe preferiu o quarto, então ele foi colocado no parapeito da janela
  • A mãe gostou do display desde logo após a instalação

Resultado após 2 anos de uso

  • Apesar da amnésia, a mãe passou a se lembrar da existência do display e de sua finalidade
    • Ela espera ver as atualizações dos filhos
    • Quando lhe contam sobre algo programado, às vezes pergunta se esse evento já foi publicado no MomBoard
  • As mensagens precisam ser mantidas atualizadas
    • Se mensagens que não se aplicam mais não forem removidas, a mãe fica confusa
  • É considerado praticamente uma das únicas intervenções tentadas que realmente melhorou a qualidade de vida da mãe e da família
    • Um dos motivos do sucesso foi que a mãe não precisou aprender nada novo
    • Como ela não consegue lembrar coisas novas, formar novas habilidades ou hábitos é praticamente impossível
  • A estabilidade do dispositivo superou as expectativas
    • Houve um período em que ele pareceu parar de funcionar, mas a causa era um hub Wi-Fi defeituoso
    • Depois que o hub foi substituído, funcionou sem problemas
    • Manter o software o mais simples possível e usar tecnologias web vanilla ajudou a evitar bugs
  • O display continua perfeitamente legível depois de 2 anos e mostra mensagens todos os dias
    • O código-fonte do MomBoard está disponível no GitHub

1 comentários

 
GN⁺ 2024-11-15
Comentários do Hacker News
  • É um belo uso da tecnologia para preservar a personalidade de alguém e a sensação de ser amado. Há muito tempo eu queria um dispositivo eInk de parede que, bastando configurar a URL e as informações de Wi‑Fi, renderizasse um arquivo Markdown e atualizasse mais ou menos uma vez por hora.
    Sou pároco, então poderia usá-lo para avisos de eventos, cancelamento de cultos, lista atual de orações e por aí vai; os usos parecem infinitos. Se fosse um produto robusto que pudesse ser pendurado na parede e precisasse ser recarregado só a cada um ou dois meses, eu estaria disposto a pagar algumas centenas de dólares por unidade.

    • Sou apoiador, e acho que isto provavelmente atende a essa necessidade: https://www.kickstarter.com/projects/usetrmnl/trmnl-the-e-in...
      Eu também queria o mesmo tipo de dispositivo eInk de uso geral, e dizem que este é bem hackeável.
    • Se o display eInk estiver na mesma LAN que um PC sempre ligado, dá para fazer isso de forma simples. Instale Python, crie um index.html em algum lugar, coloque na tag head uma meta tag para atualizar a cada hora e, na mesma pasta, execute python -m http.server; isso sobe um servidor web de thread única na porta 8000.
      Depois de confirmar em outro dispositivo que http://firstmachine:8000/ funciona, compre um display eInk e defina esse endereço como página inicial padrão. Daí em diante, basta alterar o index.html para atualizar a tela; sem serviço de assinatura nem Kickstarter, os recursos nativos do Python são suficientes.
    • Se você tem familiaridade com microcontroladores, especialmente ESP32/Arduino, recomendo o Inkplate. Conheci quando estava montando uma configuração parecida para meus pais, e há vários tamanhos até 10 polegadas, além de modelos que exibem até 6 cores.
      Dá para comprar só o módulo, ou também produtos com bateria e case de parede. Se for difícil confiar em um site aleatório, parece que a maioria dos modelos também está disponível na Digikey e na Mouser.
      https://soldered.com/categories/inkplate/
    • Como observação à parte, na tabela de frequência de profissões do Hacker News, pároco provavelmente ficaria no extremo oposto de desenvolvedor de software, então achei isso interessante.
    • https://github.com/aceinnolab/Inkycal também pode ser do seu interesse. No momento parece estar esgotado, mas existe um produto pronto e também dá para montá-lo você mesmo olhando a lista de peças.
  • Eu teria gostado que este texto tivesse aparecido no HN alguns anos atrás, quando minha mãe passou por esse mesmo estado cruel durante os últimos 4 anos de vida, ou que eu tivesse tido uma ideia dessas. O corpo, as memórias antigas e uma inteligência considerável estavam em grande parte preservados, mas várias vezes por dia ela tinha momentos de lucidez e percebia por completo a situação terrível e desesperadora em que se encontrava.
    Porém, em poucos segundos, esse pensamento e as decisões que vinham dele desapareciam no buraco negro da memória de curto prazo danificada, e, mesmo que quisesse, ela provavelmente nem teria capacidade de dar fim à própria vida. Meu irmão e eu tentamos muitas coisas para tornar a vida dela um pouco melhor, mas poucas realmente tiveram algum sucesso.
    Duas delas eram dispositivos digitais. O que ela mais gostava era um porta-retratos digital LCD que mostrava em loop infinito fotos da família em um cartão SD, e ela o mantinha ligado com bastante regularidade. O outro era um alto-falante MP3 com algumas horas de suas músicas favoritas em um cartão SD; ele podia ser usado como um rádio, só com botões de reproduzir/parar e volume, e às vezes ela conseguia aproveitar. Desejo sorte ao autor, à mãe dele e a todos em situação parecida.

  • Minha esposa teve amnésia anterógrada depois de um acidente de trânsito. Não sei se este dispositivo teria funcionado para ela; provavelmente ela teria redescoberto o aparelho a cada 10 minutos e talvez ficado feliz todas as vezes.
    Felizmente, ela se recuperou totalmente algumas semanas depois. Cuidar de alguém nesse estado exige uma paciência enorme, e dava para ver que também causava grande frustração à própria pessoa com frequência. Na prática, quase a cada 10 minutos.

    • Isso mostra a diferença entre amnésia anterógrada e demência. Demência é a degeneração do cérebro como um todo, incluindo a memória; já a amnésia pode ocorrer mesmo em um cérebro com outras funções intactas. Uma pessoa com demência provavelmente não teria conseguido mandar mensagens de texto aos filhos como no caso do post original.
    • O que exatamente causa amnésia anterógrada? Fico curioso para saber por que em algumas pessoas ela é temporária e em outras é permanente.
  • Fiquei profundamente emocionado, algo raro em posts do HN. É um uso bonito e simples da tecnologia, que melhora de forma clara e significativa a vida de alguém.
    A parte em que a mãe se lembra da existência do tablet soa parecida com o famoso caso de neuropatologia de Henry Molaison. Por causa de uma lesão cerebral específica, ele não conseguia formar novas memórias, assim como a mãe do autor do post original, mas pesquisas mostraram que ele conseguia se lembrar de algumas coisas, ainda que não conscientemente.
    Por exemplo, ele não se lembrava da pessoa que cuidava dele, mas sentia uma emoção calorosa por ela; dizia não se lembrar de ter jogado um jogo de cartas, mas aprendia mais rápido a cada repetição. O fato de ela se lembrar do tablet, junto com a sensação de que os filhos se lembram dela e a amam, parece muito semelhante.

    • Isso me lembra memória muscular. Você pode tocar uma peça no piano mesmo sem se lembrar conscientemente da partitura; é como se as mãos simplesmente “soubessem” o que fazer. Curiosamente, quando você começa a pensar conscientemente em uma passagem específica, essa capacidade piora bastante.
    • Parece difícil exagerar o quanto nossos modelos mentais sobre memória e aprendizagem estão errados. Se alguém realmente esquecesse tudo, talvez fosse possível criar para essa pessoa uma espécie de Groundhog Day ou Groundhog Hour ao contrário, otimizando cada dia para que fosse maravilhoso; mas, na prática, certamente não é nada disso.
      O texto diz que é uma condição que você não desejaria nem ao seu pior inimigo. A descrição de “sentir ansiedade por não saber onde os filhos estão, se estão bem, e achar que ficou muito tempo sem notícias” parece não ser a de uma pessoa congelada no tempo, mas uma combinação terrível de algum grau de aprendizagem ou “memória”, uma sensação da passagem do tempo e a ausência de memória episódica para explicar isso.
    • Se abordarmos mais a tecnologia pela perspectiva de idosos e de pessoas que precisam de ajuda, no fim provavelmente criaremos aplicações da tecnologia melhores para todos.
    • Segundo um estudo, mesmo quando a conversão de memória de curto prazo está comprometida, o córtex motor ainda consegue se lembrar. No mínimo, a mielinização também pode ser vista como uma forma de memória fortalecida pelo uso repetido.
      Também fico curioso se esse sentimento caloroso é mais forte em relação a alguém que faz lembrar uma pessoa conhecida do passado. Algo como “esta enfermeira me lembra a tia Sarah, que foi tão gentil quando meu cachorro morreu”.
    • Enquanto lia, também pensei imediatamente que deveria salvar nos favoritos para o caso de precisar um dia. E, além disso, é bonito esteticamente; que mãe não acharia isso atraente?
  • A parte de maximizar o tamanho das letras das mensagens é interessante. Como as mensagens às vezes têm uma ou duas palavras e às vezes várias frases, um único tamanho de fonte não resolve, e ele disse que não encontrou uma forma em CSS puro de aumentar automaticamente ao máximo um elemento de texto com quebra de linha sem que ele seja cortado.
    No fim, usou uma função JavaScript que define o texto como visibility: hidden, começa tentando um tamanho muito grande, vai reduzindo até encontrar um tamanho que caiba e então o torna visível de novo. Parece um recurso que seria muito útil como funcionalidade básica do CSS, não só por acessibilidade. No geral, é um uso da tecnologia que aquece o coração.

    • Acompanho a evolução da Web desde 1995 e, desde que CSS virou moda no fim dos anos 90, sempre senti que ele não combinava com os casos de uso reais. Saímos da época em que desenhávamos sites com tabelas em editores WYSIWYG no navegador para um mundo em que, por mais experiência de front-end que você tenha, até centralizar texto dá trabalho — tudo por causa de um projeto feito por comitê.
      O CSS passou dos limites, e hoje eu votaria para jogá-lo fora por completo. Sei que é uma afirmação forte e polêmica, mas, para quem cresceu com Microsoft Word e Aldus PageMaker, dá para dizer que a editoração eletrônica dos anos 1980 era melhor do que a atual. Isso porque, muito antes da Web ou do suporte técnico, pequenos negócios familiares conseguiam realizar trabalho de verdade com ela.
      Não entendo por que hoje escrevemos interfaces essencialmente em algo parecido com assembly. Só recentemente entendi como o float deveria funcionar originalmente, junto com shape-outside, e o exemplo pode ser visto pelo botão Run code snippet.
      https://stackoverflow.com/a/33953666
      Ao ver esse pequeno markup fluir como uma matéria de revista, fica claro que os navegadores deveriam ter conseguido fazer isso desde o início. Mas eles foram criados por gente do mundo Unix e PC, não por especialistas em interface humana como Bill Atkinson. Basta ver quanto tempo levou para aplicar corretamente traços e sombras a fontes outline para entender por que os primeiros sites, quando colocavam texto sobre imagens, pareciam Myspace.
      O CSS poderia se beneficiar de um conhecimento melhor das dimensões do elemento contêiner, como em consultas calc() ou @media. Mas o próprio @media também é discutível, porque dispositivos móveis não deveriam ser tratados como algo separado. Precisamos de uma metáfora tipográfica mais poderosa que justify, e deveria ser possível ajustar automaticamente o tamanho da fonte ao contêiner.
      O pecado original do CSS foi tentar dar a todos uma ferramenta de layout padronizada e neutra em relação à mídia. Talvez tivesse sido melhor usar como base o fluxo automático intuitivo do Qt e, quando necessário, descer para uma matriz de restrições como o Apple Auto Layout. Para constar, sou desenvolvedor back-end, e fico pasmo ao ver quanto esforço é necessário no front-end para conseguir fazer tão pouca coisa.
    • Não consigo entender como isso ainda não é um recurso do CSS. Poderia ser algo como font-size: "as-big-as-possible-while-still-fitting-parent-container";, ou simplesmente font-size: max;.
    • É uma das funcionalidades que mais venho querendo no CSS há anos. Clientes reclamam que basta acrescentar uma letra a um título para ele quebrar para a linha seguinte, e já perguntaram dezenas de vezes se não dá para reduzir só a fonte daquele título, sem afetar os outros.
      Existem várias formas de fazer isso, mas, se imaginarmos que houvesse uma solução CSS de uma linha como font-size: 12-18px 400px;, todas elas são gambiarras trabalhosas. Seria ótimo ter algo que fizesse isso automaticamente.
    • Existe uma solução em CSS puro: https://kizu.dev/fit-to-width/
  • Para o problema de “se não tirarmos uma mensagem que não se aplica mais, minha mãe fica confusa”, seria bom incluir data e hora de início/fim em cada mensagem e fazer o board lidar com isso. Assim daria para agendar com antecedência e fazer desaparecer automaticamente.

    • Talvez fosse bom adicionar uma mensagem padrão que preencha a data automaticamente, para que, se a rede cair por um tempo ou alguém esquecer de publicar uma mensagem, isso não fique evidente.
    • Concordo. Ou também poderia haver um temporizador de expiração, como “esta mensagem expira em 12 horas”.
    • Seria bom mostrar também a data atual junto com a data da mensagem.
  • Inspirado pelo Poetry clock (https://www.theverge.com/23669343/ai-clock-chatgpt-poems-rhy...), criei um display eInk com Raspberry Pi para manter contato com meus pais
    Meu pai não gostou do Poetry clock, mas gostou de geração de imagens. Então conectei um Inky Impression 7.3 colorido a um Raspberry Pi
    Criei um bot básico no Telegram para que, ao enviar um prompt de voz como “um dia de neve”, ele perguntasse em qual estilo, entre os pintores favoritos, a imagem deveria ser criada. Quando ele combinava dois estilos e mostrava em uma lista, os resultados ficavam mais legais. O prompt buscava uma citação aleatória adequada ao tema e, ao enviar a citação e o estilo para o Stable Diffusion, cerca de 30 segundos depois uma nova imagem e a citação apareciam no display
    Depois, meu pai perguntou se poderia simplesmente enviar imagens diretamente, e agora prefere publicar todos os dias uma imagem relacionada ao que é aquele dia — por exemplo, em 13 de novembro, “World Kindness Day” — e, de vez em quando, fotos da família. Minha mãe fica ansiosa para ver qual dia meu pai escolheu diariamente

    • O Poetry clock é divertido. Mas o artigo diz que modelos de linguagem de IA como o ChatGPT têm tendência a inventar dados, inclusive ao dizer as horas
      Segundo Webb, cerca de uma vez a cada 15 minutos o relógio simplesmente mente sobre o horário para conseguir rimar. É algo como dizer “one past two” quando, na verdade, é “two past one”. Dá para corrigir, mas por enquanto é uma característica divertida, e a expressão de que “mecanismos de relógio têm desvio de precisão e dispositivos de IA têm desvio de alucinação” é marcante
  • A demência se parece mais com uma falha progressiva de múltiplos sistemas em que CPU, RAM, SSD e placa-mãe estragam juntos; olhando apenas para a amnésia anterógrada, é uma falha em que não se consegue gravar no SSD
    É difícil para amadores em medicina distinguir as duas coisas, assim como para amadores em tecnologia, mas especialistas em medicina deveriam conseguir diferenciá-las como especialistas em tecnologia. Se não dá para fazer upgrade do SSD, usar CPU e RAM para compensar um SSD defeituoso é um hack excelente. É exatamente por isso que confiro o Hacker News quase todos os dias

    • A forma de explicar a diferença entre demência e amnésia anterógrada é bem centrada em PCs, mas ainda assim gostei
  • A Pimoroni tem vários displays eInk de até 7,3 polegadas, incluindo modelos com botões e LEDs. Dá para fazer o que você quiser
    https://shop.pimoroni.com/search?q=inky
    Todos os tablets e leitores de e-books Boox simplesmente rodam Android. Para quem pergunta sobre carregar e exibir uma página web, tudo o que o Android consegue fazer é literalmente possível, e há vários apps de quiosque e navegadores com modo quiosque. Também existem ferramentas de automação para Android bastante caras

    • Se você está acostumado com microcontroladores, especialmente ESP32/Arduino, recomendo o Inkplate. Conheci ao montar uma configuração parecida para meus pais, e há vários tamanhos até 10 polegadas e modelos com exibição de até 6 cores
      Dá para comprar só o módulo, ou produtos com bateria e case para parede. Se for difícil confiar em um site aleatório, parece que a maioria dos modelos também está na Digikey e na Mouser
      https://soldered.com/categories/inkplate/
    • É legal, mas se “leva cerca de 40 segundos para atualizar esse display”, acho que não serve para este projeto
      Pela demonstração no vídeo de apresentação, várias cores ficam piscando por bastante tempo durante a longa atualização, o que pode ser muito confuso para alguém cuja memória de curto prazo talvez não dure tudo isso
      [0] https://www.youtube.com/watch?v=TluopgSoSWY&t=500s
  • É uma história realmente excelente, e fico feliz que o autor tenha encontrado algo que funciona bem para a mãe. A parte mais interessante é que, apesar da perda de memória, a mãe passou a lembrar da existência e da finalidade desse display, e espera pelas atualizações dos filhos
    O cérebro é realmente extraordinário. Seria bom saber se isso é uma predisposição específica da mãe dele ou se também pode ajudar outras pessoas em condições parecidas