1 pontos por GN⁺ 2024-12-25 | 1 comentários | Compartilhar no WhatsApp
  • pISSStream é um app que mostra em tempo real a capacidade do tanque de urina da Estação Espacial Internacional (ISS), com suporte à barra de menus do macOS, além de iOS, watchOS e visionOS
  • Os dados vêm do stream público oficial de telemetria da ISS da NASA via Lightstreamer, exibindo a porcentagem mais recente de enchimento do tanque quando uma estação terrestre está recebendo o sinal
  • No macOS, ele mostra 🧑🏽‍🚀🚽 e a porcentagem de enchimento na barra de menus; se a conexão ou o sinal de telemetria cair, mostra 🧑🏽‍🚀❗, o último valor recebido e o status “Connecting” ou “No Signal”
  • iOS e watchOS mostram o nível do tanque em tempo real com uma interface simples, enquanto o visionOS oferece visualização 3D baseada na ImmersiveSpace API e áudio espacial
  • Como é o primeiro app em Swift e para plataformas Apple do autor, ele não trata de forma ativa dados desatualizados nem erros; Pull Requests para correção de bugs são aceitos, mas não há planos de adicionar outras estatísticas da ISS

O que o pISSStream faz

  • pISSStream é um app que mostra em tempo real a capacidade do tanque de urina da International Space Station
  • As plataformas compatíveis são macOS, watchOS, iOS e visionOS
  • Os principais recursos são:
    • Monitoramento em tempo real do nível do tanque de urina da ISS
    • Integração com a barra de menus do macOS
    • Atualizações em tempo real nos apps para iOS e watchOS
    • Visualização 3D imersiva no visionOS
    • Áudio espacial baseado em deep-space soundscape na tela imersiva
    • UI aprimorada e ícone de app personalizado para Vision Pro
    • Uso do stream público oficial de telemetria da ISS da NASA via Lightstreamer

Instalação e requisitos de build

  • No macOS, o DMG da versão mais recente pode ser baixado pelo link Download
  • iOS, watchOS e visionOS precisam ser compilados a partir do código-fonte e assinados com sua própria conta de desenvolvedor por causa do modelo de segurança da Apple
  • Os pré-requisitos de build são:
    • Xcode 15.2 ou superior
    • Apple Developer account
    • Dispositivo com iOS 17.0 ou superior para o app de iOS
    • Apple Vision Pro ou simulador do visionOS
  • O procedimento básico de build consiste em clonar o repositório, abrir pISSStream.xcodeproj no Xcode, selecionar a equipe de desenvolvimento em Signing & Capabilities e então compilar e executar no dispositivo de destino
  • Mesmo sem uma Apple Developer account, é possível executar no simulador ou em um dispositivo por até 7 dias usando um perfil de provisionamento gratuito

Desenvolvimento e distribuição no visionOS

  • Para desenvolvimento no visionOS, o visionOS SDK precisa estar instalado no Xcode
  • O app usa a ImmersiveSpace API para a experiência de visualização 3D e inclui áudio espacial para aumentar a imersão
  • Os requisitos são:
    • Mac com Apple silicon
    • Xcode 15.2 ou superior
    • Apple Developer Account
    • Vision Pro com modo de desenvolvedor ativado
    • Mac e Vision Pro conectados à mesma rede Wi‑Fi
  • O procedimento de desenvolvimento sem fio consiste em permitir Developer Mode e Remote Development no Vision Pro, parear o Vision Pro em Devices and Simulators no Xcode, selecioná-lo como alvo de build e executar
  • Problemas comuns incluem:
    • “Device not found”: é preciso verificar a conexão Wi‑Fi
    • “Unauthorized device”: é preciso parear novamente o Vision Pro
    • “Build failed”: é preciso atualizar o perfil de provisionamento
    • “No paired Vision Pro found”: é preciso verificar a conexão e o pareamento do Vision Pro
    • “Invalid signing”: é preciso verificar a conta de desenvolvedor e o perfil de provisionamento

Como usar por plataforma

  • No macOS, quando a conexão com o Lightstreamer e a recepção do sinal de telemetria da ISS estão normais, o item da barra de menus mostra 🧑🏽‍🚀🚽 e a porcentagem de enchimento
  • Se a conexão ou o sinal de telemetria da ISS cair, o item da barra de menus mostra 🧑🏽‍🚀❗ e o último valor recebido, e o menu exibe “Connecting” ou “No Signal”
  • No iOS, ao abrir o app, é possível ver o nível atual do tanque em uma interface simples
  • No visionOS, é possível ver o tanque de resíduos da ISS em 3D imersivo e visualizar o nível de enchimento em tempo real
  • No watchOS, é possível acompanhar em tempo real, no pulso, o nível de enchimento do tanque de resíduos da ISS

Motivação e limitações

  • A motivação para a criação foi a ideia de que é “ridículo, mas ao mesmo tempo incrível” poder criar em uma tarde um app de piada que lê dados reais de telemetria em tempo real vindos do banheiro da estação espacial
  • Também foi uma boa desculpa para aprender Swift, mas a motivação principal foi o próprio absurdo do app
  • Problemas conhecidos incluem:
    • Por ser o primeiro app em Swift e para plataformas Apple do autor, não é o ápice das boas práticas de programação
    • Pode quebrar de formas inesperadas por motivos pequenos
    • Não reage ativamente a dados desatualizados
    • Não dá muita atenção ao tratamento de erros
  • Pull Requests para correção de bugs são bem-vindos
  • O stream de dados foi conhecido por meio do ISS Mimic, e embora o ISS Mimic tenha estatísticas muito mais numerosas e interessantes do que o nível do tanque de urina, elas não serão adicionadas ao pISSStream

1 comentários

 
GN⁺ 2024-12-25
Opiniões do Hacker News
  • Descobri o stream de dados em https://iss-mimic.github.io/Mimic/, e há estatísticas muito mais numerosas e interessantes do que o nível de enchimento do tanque de urina
    A frase “não vou adicionar nada disso” é simplesmente uma forma perfeita de comunicar os não objetivos do projeto
    Vale aprender como boa prática de comunicação em open source

    • Por algum motivo, imagino uma situação em que todas as comunicações são cortadas e o único sensor funcionando é o sensor do tanque de urina
      Viraria um filme em que os astronautas controlam a variação do tanque para se comunicar em código Morse, e alguém com TDAH que instalou esse app de barra de menus percebe a situação e salva todo mundo
    • Além de https://iss-mimic.github.io/Mimic/, a página do projeto também vale muito a leitura: https://github.com/ISS-Mimic/Mimic
    • Com todos esses dados, acho que daria para ajudar a fazer ataques de engenharia social bem sujos contra a ISS e a tripulação
      Agora o único problema que resta é como mandar o corpo até lá
    • Eu não devia ter ficado sabendo dessa informação perigosa
      Agora dá muita vontade de gastar tempo demais criando um SVG da ISS e até animando com esses dados
    • Agora é hora de criar um token que faça rebase conforme o valor de pressão da câmara de descompressão
      Dá para fisgar os boomers com Real World Assets(tm)
  • Sigo no Bluesky um bot que publica posts do HN com mais de 50 pontos, e fiquei surpreso quando de repente apareceu um link familiar do GitHub
    Era algo que eu mesmo tinha postado no Show HN uns 5 dias antes (https://news.ycombinator.com/item?id=42464454), então estranhei por que tinha aparecido de repente; na verdade, não era o meu post
    Fico sinceramente feliz que, entre os projetos open source que fiz nos últimos 15 anos ou algo assim, este tenha virado o mais popular
    Para a pergunta “mas por que você fez isso?”, a resposta honesta é “porque achei engraçado”; eu estava procurando algo simples para meu primeiro projeto em Swift e, quando vi o iss-mimic, senti na hora que precisava fazer isso

    • Há planos de colocar IA nisso para monetizar?
    • Eu também tentei algo parecido: usei a posição da ISS para calcular o “país que mais recebe xixi” dos astronautas
      O script para os dados deve estar funcionando em algum lugar, mas infelizmente nunca cheguei a fazer um site com ranking
    • Não pensa em transformar isso em biblioteca? Parece que todo painel de informações de apps Swift precisa desse indicador importante
    • Acho que devo combinar este indicador que fiz com a fonte de dados: https://www.secretbatcave.co.uk/electronics/shart-o-meter/
    • Pelo que sei, estão desenvolvendo uma forma de reciclar urina em água
      Dá para mostrar também o nível da água e o momento em que ocorre a transição entre os dois tanques?
  • Eu fui líder técnico e controlador de voo da equipe da NASA que abriu esses dados de telemetria como parte do ISSLive
    Essa API foi usada pelo ISS Mimic, e na época nós divulgamos o programa da estação espacial ao público por alguns anos: https://youtu.be/xAhw_8B25N0?si=OZXH9sZ0bY_iX40V
    É bem engraçado ver o PissStream surgir 12 anos depois
    Fico feliz que o servidor de livestream esteja sendo bem usado e, na verdade, há muitos outros dados bons de telemetria
    Gosto do ISSMimic

    • Não peço desculpas, e faria de novo
      Falando sério, poucos usos da telemetria em tempo real da ISS devem ser tão profundamente triviais quanto este, mas é surpreendente que uma besteira dessas não só seja possível como também seja muito fácil
      Respeito à NASA e a todos os envolvidos que tornaram isso possível desde o início
      Ao ver o dashboard do ISS Mimic, também percebi de novo que há uma quantidade enorme de dados de telemetria interessantes
    • Fico curioso se o stream de telemetria vai continuar até o fim quando a ISS for finalmente encerrada e destruída
      Se for o caso, quando esse momento chegar, vou querer ficar diante do terminal esperando o último adeus da estação
    • A música lembra o tema de Star Trek Voyager, e é engraçado que na verdade não é a mesma música
  • Tentei portar isso para a web: https://gistpreview.github.io/?76f03f49be58344bfa64c9d5d9f0ec29
    O código-fonte está aqui: https://gist.github.com/simonw/76f03f49be58344bfa64c9d5d9f0ec29
    Fiz colando o repositório GitHub inteiro em Swift no Gemini 2.0 e pedindo para portar para uma página web: https://gist.github.com/simonw/b4aec4e879e50ac74f6f9cc6e1cdc0a1

    • Ele até colocou tratamento de erros básico
    • Também pedi algo parecido ao Claude e ao ChatGPT-4o, e a variação nos resultados foi bem grande
      Dei o mesmo prompt ao Aider e acrescentei “use a mesma API do código Swift”, e funcionou de primeira; mas, com o Claude, quando eu dizia apenas “página web”, ele não conseguiu de primeira e precisei de mais alguns prompts
      O ChatGPT-4o alucinou a URL para carregar o lightstream.js, e no fim precisei depurar manualmente
      Mesmo em uma tarefa pequena assim, os resultados mudam muito conforme a variação do prompt, então fica fácil entender por que, no HN, sempre há gente dividida entre achar que assistentes de codificação com LLM parecem a segunda vinda e achar que é tudo papo furado
    • Para usar eticamente, também deveria incluir atribuição pelo agradecimento
    • Quando alguém disser que LLM não é melhor do que copiar e colar do Stack Overflow, pretendo citar este porte para web
  • Um bom exemplo de processamento de streams

  • Sou membro da equipe do ISS Mimic, e gostei. Ótimo trabalho
    Se a preocupação for a privacidade dos astronautas, o valor do tanque de urina não reflete diretamente a adição de urina pela tripulação

    • Comparado ao ISS Mimic, “ótimo” talvez seja um pouco exagerado, mas aceito o elogio com gratidão
      Também tenho curiosidade sobre o que esse valor realmente reflete
      Parece que ainda não mergulhei até as profundezas da alma do UWMS
    • Então, sinceramente, fico curioso sobre o que ele realmente reflete
  • Os nomes das variáveis são precisos
    static let pissYellowLight = Color(red: 0.95, green: 0.85, blue: 0.2)
    static let pissYellowDark = Color(red: 0.7, green: 0.6, blue: 0.1)

    • Originalmente eu ia mudar a cor de fundo e a cor de primeiro plano do item da barra de menus, mas o rótulo MenuBarExtra do SwiftUI não parecia oferecer suporte a mudança de cor, pelo menos não de um jeito imediatamente visível
      Depois que desisti de customizar o rótulo, naturalmente esqueci de apagar o enum não usado
  • Sou a pessoa que criou apolloinrealtime.org e agora trabalho no programa da ISS
    Meus respeitos

    • Apollo in Real Time é um recurso absolutamente excelente. Obrigado
  • Eu não sabia que isso era informação pública

    • É público porque é financiado com dinheiro público
    • Uma API talvez tenha substituído um pedido de acesso à informação
  • Também daria para enviar uma notificação toda vez que a tripulação urinar

    • Então não seria possível identificar qual astronauta foi pelo volume?
      Talvez seja possível se também houver outros dados de análise química
      A NASA poderia vender esses dados de análise para colecionadores de dados e resolver seus problemas de orçamento, além de exibir anúncios em todas as telas da ISS
      Na verdade, é surpreendente que ainda não exista uma startup da YC lançando um vaso sanitário inteligente desses