1 pontos por GN⁺ 2024-08-29 | 1 comentários | Compartilhar no WhatsApp
  • Dos 290 MB do app iOS da Oral-B, 233 MB vêm do asset catalog, e a maior parte do tamanho do app é ocupada por recursos em PDF para vários modelos de escova de dente
  • O maior recurso da Oral-B é Sonos_M9_rose, com 7,8 MB, e muitos PDFs contêm apenas o cabo e os botões em vez da escova inteira
  • O Comino.bundle inclui arquivos como 20class_seqlen26_6p5h_20200302-095627_comino_android_production, que parecem ser pesos de modelo
  • O app Colgate Smile é ainda maior, com 378 MB, e os principais fatores de inchaço são o framework Unity de 125 MB e símbolos binários que não foram removidos
  • A Colgate também inclui 60 MB de recursos e arquivos de localização duplicados no bundle principal e na extensão de widget, fazendo com que pelo menos 120 MB aumentem o tamanho do app sem valor funcional

A maior parte do tamanho do app da Oral-B vem de recursos em PDF

  • No app Oral-B, de um total de 290 MB, 233 MB vêm do asset catalog
    • Isso corresponde a 80% do tamanho total
    • A maior parte consiste em recursos em PDF que representam diferentes modelos de escova de dente
  • O maior recurso em PDF é Sonos_M9_rose, com 7,8 MB
  • Vários PDFs não incluem a imagem da escova inteira, mas apenas o cabo e os botões
  • Outro item que chama atenção é o Comino.bundle de 15 MB
    • Ele inclui arquivos como 20class_seqlen26_6p5h_20200302-095627_comino_android_production
    • Esses arquivos parecem ser algum tipo de pesos de modelo

No Colgate Smile, o problema maior é o inchaço que poderia ser reduzido

  • O app Colgate Smile tem 378 MB
  • O app aparentemente usa Unity por causa do recurso de “guided brushing”
    • O framework Unity tem 125 MB
    • Se esse recurso trouxer valor, o uso de Unity em si pode ser visto como uma escolha compreensível
  • O desperdício maior é que, no app de produção, os símbolos binários não foram removidos
    • Os símbolos binários são usados para simbolicação
    • Se o DSYM for enviado para um crash reporter, não há necessidade de incluí-los no app de produção
    • Só a remoção dos símbolos binários reduziria cerca de 60 MB no total, ou 15%
  • Outro fator de inchaço é a duplicação
    • A Colgate inclui 60 MB de recursos e arquivos de localização duplicados no bundle principal e na extensão de widget
    • Os nós vermelhos indicam itens duplicados
  • No app da Colgate, pelo menos 120 MB foram contabilizados como tamanho sem qualquer valor funcional para o usuário
  • Leitura relacionada:

1 comentários

 
GN⁺ 2024-08-29
Opiniões no Hacker News
  • Não entendo por que os apps da Oral-B e da Colgate existem para começo de conversa

    • É para coletar dados a fim de fazer marketing e publicidade para os clientes
    • O app pode dizer quais dentes você escovou corretamente, ou seja, se dedicou tempo suficiente, e quais dentes você deixou passar ou escovou rápido demais
      Pessoalmente, usei uma vez e apaguei, mas pode ser útil para quem quer verificar se a escovação está eficiente. De todo modo, é totalmente opcional; dá para ignorar a existência do app e usar só a escova
    • É o mesmo motivo pelo qual agora existem até escovas de dentes com IA. É uma corrida para reinventar a escova de dentes todos os anos, criando novos diferenciais, novos ângulos de marketing e volumes maiores de vendas
    • É parecido com propaganda de Coca-Cola ou McDonald’s. Não é para dar informações novas, mas para colocar o logotipo, a marca e o nome repetidamente na cabeça do espectador ou usuário
      Assim, ela parece mais familiar do que outras marcas “desconhecidas”, e a chance de a pessoa comprar aquela marca aumenta. Com o app é igual: toda vez que você o usa, ele enfia o logotipo e a marca na sua frente. No fim das contas, nem é preciso vender os dados
    • Assim como seguradoras de carro dão desconto por direção segura quando você usa um dispositivo ou app de registro de dados, é surpreendente que as seguradoras de saúde ainda não tenham começado a dar desconto para “quem escova bem os dentes”
  • A triste realidade é que, se você atualizar em App Store > Your Account, dá para contar nos dedos os apps com menos de 100 MB. No meu caso, a maioria dos apps tem 300 MB, e isso falando só das atualizações
    Comparei com Android, e lá os apps são muito mais leves. Apps antigos em Objective-C eram muito mais enxutos, mas apps em Swift continuam grandes e pesados mesmo depois da ABI. Parte é preguiça dos desenvolvedores, parte é porque as ferramentas da Apple não são boas. Não há tree shaking nem remoção de código morto em CocoaPods compilados ou pacotes Swift. A Apple não parece se importar muito; talvez até goste, porque vende aparelhos novos com mais armazenamento ou assinaturas do iCloud

    • Trabalhei nisso no Google. O formato moderno de distribuição de apps Android foi totalmente projetado para dividir o app em partes pequenas, de modo que o usuário baixe e instale, a qualquer momento, apenas o mínimo necessário
      Recursos, arquitetura e idioma só são baixados quando necessários, e isso vai até componentes específicos por área, como formatos de compressão de texturas de assets de jogos. Assim, o dispositivo recebe apenas as texturas necessárias, e o desenvolvedor pode distribuir em vários formatos para que o usuário receba a melhor opção compatível com o aparelho. Também é possível baixar e instalar módulos de código sob demanda. Por exemplo, dá para separar o fluxo de cadastro em um módulo próprio, instalá-lo no início e removê-lo depois que o usuário se cadastrar, reduzindo o tamanho instalado. Um desenvolvedor não baixava nem instalava de fato um módulo de VOIP de alguns MB para suporte ao cliente até o usuário abrir a tela de suporte, então a maioria dos usuários nunca o instalava
      [0]: https://developer.android.com/guide/playcore/asset-delivery/...
    • A Apple também tem ferramentas assim. Ela adicionou uma ferramenta nova que também pode ser aplicada a bibliotecas dinâmicas
  • https://xcancel.com/emergetools/status/1828490449881047401

    • É o pior proxy do Twitter que já vi. Aparece uma tela idiota dizendo “espere x segundos para ver esta página” e depois mandam “recarregar a página”
      Parece aquelas páginas intermediárias de spam que aparecem quando você tenta ver streaming ilegal. É uma ferramenta horrível a ponto de ser difícil acreditar que alguém sem relação com aquele site tenha postado isso
  • É irritante que coletar dados de usuários para data brokers tenha virado um negócio tão valioso. Não dá para ficar feliz vendo grandes empresas continuarem criando apps que extraem dados em vez de produtos bons, enquanto os números sobem
    Perceber que estou resmungando “antigamente era melhor” parece confirmar oficialmente que já passei da meia-idade, mas apps para geladeira, lava-louças e escova de dentes? Quando a lava-louças colocar a louça sozinha, aí talvez eu aceite o ajuste hedônico de preços

    • Seria bom se a qualidade dos anúncios subisse tanto quanto a eficiência em sugar dados. Eu nem tenho carteira de motorista e estou em um relacionamento, mas boa parte dos anúncios personalizados nos meus dispositivos é de sites de namoro e concessionárias de carros
  • Então, no fim, eles só colocaram imagens de modelos diferentes em PDFs estupidamente grandes? Não era o que eu esperava. Achei que seria algo mais parecido com o app da Colgate mencionado depois

    • Absurdo. Esse tipo de coisa deveria 100% ser baixado quando necessário
    • Fico me perguntando se criaram os PDFs usando a função “imprimir em PDF” do navegador. Os PDFs gerados pelo Chrome ficam enormes
    • Achei que teriam usado Unreal Engine. Da última vez que conferi, até um app mínimo passava de 200 MB
  • O app da Oral-B era bem leve alguns anos atrás, mostrava um feed com as últimas notícias do mundo, registrava dados no Apple Health e incentivava sequências de escovação, então era divertido
    Mas eles reescreveram o app inteiro, perderam quase todos os recursos, e eu nunca mais o abri depois da primeira execução após a atualização. Seria bom se existisse uma iOS App Store que permitisse instalar versões antigas, como o TestFlight. Infelizmente, até o TestFlight só dura no máximo 90 dias. Talvez seja hora de pegar um sniffer BLE, mas parece impossível obter permissões do HealthKit para um app temporário, não autorizado e de uso único

    • “Feed com as últimas notícias do mundo”? Como assim? Oral-B? Feed de notícias do mundo?
    • O protocolo já foi submetido a engenharia reversa. Uso Home Assistant e Bluetooth, e uma escova de dentes Oral-B de um vizinho aparece por aqui
    • Participei do trabalho nessa versão. Vou ficar quieto no restante desta discussão
  • Mais vergonhoso do que o tamanho em si é o fato de ser preciso um app para mudar os modos da escova de dentes. Acho que isso realmente não deveria ser permitido, mas não sei bem como obrigar isso

    • Deve depender de qual modelo você usa e de qual modo está tentando mudar, mas na Oral-B Pro 5000 dava para alterar, mesmo sem o app, os modos de limpeza como “Daily Clean” e “Sensitive”, além da cor do LED na ponta
      A tela mostra um timer do tempo de escovação, e isso é suficiente para o rastreamento necessário na escova. Pode haver outros modos que não sejam acessíveis pelo botão, mas não conheço nenhum
    • A primeira tarefa é ter um órgão de defesa do consumidor com autoridade legal para retirar do mercado produtos com defeito de projeto
      A segunda tarefa é definir exatamente o que deve ser permitido e proibido, mas há tanta coisa idiota que uma empresa consegue imaginar para infernizar os clientes que acho aceitável dar a esse órgão uma margem de discricionariedade bem ampla, desde que ele avalie e decida com base em bons princípios centrais. Por exemplo, um princípio como “funções que podem ser implementadas sem um app complementar não devem exigir um app complementar”
    • Por que precisamos de legislação até para isso? É só não comprar essa escova e deixar o produto morrer naturalmente
    • Na minha IO, dá para mudar os modos pela escova, mas a escolha da lista de modos disponíveis é feita no app. Ainda assim, o padrão parece ser “todos”, então dá para usar normalmente mesmo sem nunca abrir o app
  • A verdadeira pergunta é por que, para começo de conversa, uma escova de dentes precisa de app

    • É para coletar o máximo possível de dados dos clientes, agregá-los torcendo para que sejam anonimizados e depois vendê-los a data brokers, extraindo ainda mais dinheiro da base de clientes
      Tudo isso acontece sob “consentimento”. Porque você instalou o app e provavelmente aceitou os termos de serviço ou a política de privacidade. Também vem com o pretexto de ser um serviço que conta quando e com que frequência você interagiu com o produto, ou que te lembra de usá-lo. Mesmo que qualquer adulto com uma vida normal já fizesse isso, só que com menos precisão
    • Como exemplo hipotético, empresas de chiclete “odontológico” poderiam pagar caro por informações que cruzem hábitos de escovação das pessoas com dados demográficos e geográficos
      Se os dados mostrarem que, em determinada cidade ou condado, as pessoas escovam os dentes 25% a 50% menos do que a população em geral, faz bastante sentido aumentar o gasto com publicidade naquela região. Afinal, dá para presumir que pessoas que não escovam bem os dentes têm maior probabilidade de comprar chiclete odontológico para compensar os danos
    • Mostra se você passou tempo suficiente na parte da frente, de cima e de trás de cada dente. Uma escova elétrica é usada de forma diferente de uma escova manual; não é para ficar movimentando para frente e para trás
    • Sinceramente, eu pensei a mesma coisa. Imaginei que fosse algo como estatísticas de escovação ou tempo por dente
    • Um motivo pelo qual usei o app foi por causa das crianças. Ele mostra uma animação enquanto elas escovam, mantém estatísticas e, como recompensa, deixa escolher coisas como a cor do avatar
  • Versão desenrolada: https://unrollnow.com/status/1828490449881047401

    • Não funciona para mim

      Connection failed: User 'u327838624_unroll' has exceeded the 'max_connections_per_hour' resource (current value: 500)

    • Parece que morreu com o tráfego do HN

      Connection failed: User 'uxxxxxxx_unroll' has exceeded the 'max_connections_per_hour' resource (current value: 500)
      Isso é um erro do MySQL?

  • Por que uma pessoa em sã consciência baixaria um app de escova de dentes?

    • Como então se atualiza o firmware da escova? Queria que fosse piada, mas parece que a Phillips lança atualizações de firmware para a Sonicare algumas vezes por ano