Consumindo o firehose do Bluesky por menos de US$ 2,50 por mês
(bsky.bad-example.com)- Os dados públicos do Bluesky cresceram até a escala de 15 milhões de usuários, e com o Jetstream é possível receber todos os eventos da rede em tempo real para fazer experimentos
- Como é um firehose no formato de feed JSON via WebSocket, dá até para se conectar pelo navegador, e experimentos simples com dados em tempo real podem começar de graça
- O app de exemplo detecta eventos de
deletee mostra por último, em um feed anônimo e efêmero, o texto de posts apagados há instantes - O ambiente de operação usa uma máquina shared-cpu-1x com 256 MB de RAM da Fly.io e um volume persistente de 2 GB, com custos de US$ 1,94 e US$ 0,30 por mês, respectivamente
- Não dá para garantir que todo app de firehose rode com essa leveza, mas alguns apps de consumo em tempo real podem operar bem apenas com uma instância mínima
Recebendo o firehose do Bluesky com Jetstream
- Os dados do Bluesky são muito públicos, e atualmente existe um volume de dados públicos na escala de 15 milhões de usuários
- Usando o Jetstream, é possível receber tudo o que acontece na rede como um feed JSON via WebSocket em tempo real
- Também dá para conectar direto ao firehose no navegador e fazer experimentos simples, como extrair palavras aleatórias dos posts publicados naquele momento
Um app pequeno que mostra eventos de exclusão
- O app experimental deletions.bsky.bad-example.com escuta todos os eventos
deletedo firehose e exibe o texto recém-apagado em um feed anônimo e efêmero - Esse app foi criado quando a rede Bluesky era bem menor do que é hoje, e agora a velocidade da rede aumentou a ponto de ficar bem mais caótica
- Ele roda na menor instância da Fly.io
- Fly machine, shared-cpu-1x, 256MB RAM: US$ 1,94 por mês
- Volume persistente de 2GB: US$ 0,30 por mês
- O fluxo de funcionamento é composto por um cache simples e correspondência com eventos de exclusão
- Recebe todos os novos eventos
create-postda coleçãoapp.bsky.feed.post - Filtra posts vazios e aplica ocultação (redaction) a menções e links
- Salva o texto tratado no pebbledb com a chave
did+rkey - A cada poucos segundos, remove em lote os textos armazenados há mais de 48 horas
- Quando chega um evento
delete-post, procura o texto no cache e, se existir, faz broadcast para os observadores atuais
- Recebe todos os novos eventos
- O escopo funcional é pequeno, mas roda com estabilidade na instância mínima da Fly.io, e alguns apps mais interessantes também podem ser operados em uma escala parecida
1 comentários
Opiniões no Hacker News
Há duas coisas boas no BlueSky: dá para usar o domínio do meu site como nome de usuário, como @bradgessler.com, e a função de copiar e colar imagens em mensagens no iOS funciona bem
No X/Twitter, isso estava quebrado havia muito tempo. Há mais vantagens, mas essas duas me chamam especialmente a atenção. Se você precisa de um caminho para começar, também criei um starter pack para hackers Ruby: https://go.bsky.app/HXB2cPh
Há muitos outros starter packs e comunidades também
did:plc, e osAppViews (bsky.app, o app do BlueSky para smartphone etc.) consultam apenas o plc.directory, o “banco de dados” de propriedade do BlueSkyPara que o nome de usuário seja um nome de domínio de verdade, o BlueSky teria que oferecer suporte a identificadores do tipo
did:web, o que atualmente não acontece. No fim, no sentido de que o nome de usuário é mapeado para um banco de dados interno, é igual ao X. O BlueSky se parece mais com o Twitter antes de ter que devolver dinheiro aos investidores, e dá para apostar que, daqui a 10 anos, mais recursos vão quebrar enquanto eles se concentram em recuperar o investimento. Tenho uma leve inclinação para o lado do ActivityPub, mas reconheço que a arquitetura do BlueSky é melhorHá 11 anos, criei um agregador de mídias sociais no qual o usuário precisava ter um domínio verificado para se cadastrar; a ideia era usar o domínio como nome de usuário e autenticar perfis de redes sociais por meio desse domínio. Show HN da época: https://news.ycombinator.com/item?id=6529523
Pode parecer ridículo, mas o motivo pelo qual acabei não usando o BlueSky foi ele não oferecer suporte a domínios com emoji
O firehose do bsky é realmente divertido e tem uma sensação nostálgica de estar de volta a 2005
No fim de semana passado, usei isso para criar uma coisinha bem silly: https://bigmood.blue/
Supondo que seja um problema da forma de exibição, parece que a mesma imagem única se repete muitas vezes em um curto intervalo. Se a fila fosse esvaziada mais lentamente conforme ficasse vazia (por exemplo, 0,5s/numInQueue; o último elemento esperaria no mínimo 0,5 segundo e aguardaria o próximo elemento entrar na fila), o fluxo ficaria mais constante, com menos telas vazias e menos repetição. Também seria bom se as imagens mantivessem a proporção original
Seria um experimento bacana se desse para olhar por um pouco mais de tempo
Parece que voltamos aos bons tempos do Twitter antigo. Naquela época dava para criar coisas e experimentar com a API
Eu já tinha até feito um bot que ganhou uma competição: https://theexceptioncatcher.com/blog/2015/11/how-i-got-my-bo...
É um recurso bacana e, mesmo deixando posições políticas de lado, vira um grande motivo para torcer pelo BlueSky em vez do X
Também fico curioso se o BlueSky ou terceiros oferecem vários tipos de dumps em arquivos zip. Acho que isso seria melhor para reduzir a carga nos servidores
Era divertido brincar com o firehose do Twitter na época em que desenvolvedores comuns também conseguiam acesso. Fico animado ao ver essa ideia voltando
Isso é legal. Contrasta de forma gritante com as novas regras de API fechada que o Twitter lançou depois do Elon
Ainda fico irritado com o Twitter por ter quebrado todas as minhas automações e me pedido US$ 100 por mês. Pelo que parece, agora subiu para US$ 200
Isso é quase o valor da prestação do meu carro. Não é uma quantia que uma pessoa comum consiga justificar
Tenho a sensação de que, em um futuro próximo, esses dados vão virar algum tipo de dado de treinamento para AI/LLM
A demonstração de firehose com uma única palavra é excelente. Acho que pessoas criativas podem criar muitas coisas realmente legais com isso
Tenho uma conta importante no Twitter e publico manualmente posts, pensamentos, links, anúncios etc. nela
Procurei uma forma de fazer cross-post automático para Threads e Bluesky, mas não encontrei. Alguém recomenda algum método?