Consommer le firehose de Bluesky pour moins de 2,50 $ par mois
(bsky.bad-example.com)- Les données publiques de Bluesky ont atteint l’échelle de 15 millions d’utilisateurs, et avec Jetstream il est possible de recevoir l’ensemble des événements du réseau en temps réel pour faire des expérimentations
- Comme il s’agit d’un firehose au format flux JSON sur WebSocket, on peut s’y connecter même depuis un navigateur, et commencer gratuitement de simples expériences de données en temps réel
- L’application d’exemple détecte les événements
deleteet affiche en dernier le texte de publications tout juste supprimées dans un flux éphémère anonymisé - L’environnement d’exploitation utilise une machine shared-cpu-1x avec 256 Mo de RAM sur Fly.io et un volume persistant de 2 Go, pour des coûts respectifs de 1,94 $/mois et 0,30 $/mois
- Rien ne garantit que toutes les applications basées sur le firehose puissent fonctionner dans un format aussi réduit, mais certaines applications de consommation en temps réel peuvent être exploitées avec une simple instance minimale
Recevoir le firehose de Bluesky avec Jetstream
- Les données de Bluesky sont très publiques, et il existe actuellement un volume de données publiques à l’échelle de 15 millions d’utilisateurs
- En utilisant Jetstream, on peut recevoir tout ce qui se passe sur le réseau sous forme de flux JSON sur WebSocket en temps réel
- Il est même possible de se connecter directement au firehose depuis un navigateur pour faire une expérience simple, comme extraire des mots aléatoires parmi les publications en cours
Une petite application qui montre les événements de suppression
- L’application expérimentale deletions.bsky.bad-example.com écoute tous les événements
deletedu firehose et affiche le texte qui vient d’être supprimé dans un flux éphémère anonymisé - Cette application a été créée à une époque où le réseau Bluesky était bien plus petit qu’aujourd’hui, et la vitesse actuelle du réseau est désormais assez élevée pour sembler bien plus chaotique
- Elle fonctionne sur la plus petite instance de Fly.io
- Machine Fly, shared-cpu-1x, 256 Mo de RAM : 1,94 $/mois
- Volume persistant de 2 Go : 0,30 $/mois
- Le fonctionnement est simple et repose sur un cache basique et une mise en correspondance avec les événements de suppression
- Réception de tous les nouveaux événements
create-postde la collectionapp.bsky.feed.post - Filtrage des publications vides et application d’une redaction aux mentions et aux liens
- Stockage du texte nettoyé dans pebbledb avec la clé
did+rkey - Suppression par plage, toutes les quelques secondes, des textes stockés depuis plus de 48 heures
- Lorsqu’un événement
delete-postarrive, recherche du texte dans le cache puis, s’il existe, diffusion aux observateurs actuels
- Réception de tous les nouveaux événements
- Le périmètre fonctionnel est réduit, mais l’application fonctionne de façon stable sur l’instance minimale de Fly.io, et certaines applications plus intéressantes pourraient aussi être exploitées à une échelle comparable
1 commentaires
Commentaires sur Hacker News
Il y a deux raisons pour lesquelles BlueSky est bien : on peut utiliser le domaine de son site web comme nom d’utilisateur, par exemple @bradgessler.com, et sur iOS, le copier-coller d’images dans les messages fonctionne bien.
Sur X/Twitter, c’est cassé depuis longtemps. Il y a beaucoup d’autres avantages, mais ces deux-là me plaisent particulièrement. Si vous cherchez une porte d’entrée, j’ai aussi créé un starter pack pour les hackers Ruby : https://go.bsky.app/HXB2cPh
Il existe aussi énormément d’autres starter packs et communautés.
did:plc, et lesAppView(bsky.app, l’app mobile BlueSky, etc.) ne consultent que plc.directory, la « base de données » détenue par BlueSky.Pour que le nom d’utilisateur soit un vrai nom de domaine, BlueSky devrait prendre en charge des identifiants de type
did:web, ce qui n’est pas le cas actuellement. Au final, comme sur X, le nom d’utilisateur est mappé vers une base de données interne. BlueSky ressemble au Twitter d’avant le moment où il devra rembourser ses investisseurs, et je parierais que dans 10 ans, beaucoup plus de fonctionnalités se dégraderont parce qu’ils se concentreront sur le retour sur investissement. Je suis un peu biaisé en faveur d’ActivityPub, mais je reconnais que l’architecture de BlueSky est meilleure.Il y a 11 ans, j’avais créé un agrégateur de réseaux sociaux où les utilisateurs devaient posséder un domaine vérifié pour s’inscrire : le domaine servait de nom d’utilisateur et permettait d’authentifier les profils de réseaux sociaux. Show HN de l’époque : https://news.ycombinator.com/item?id=6529523
Ça peut sembler ridicule, mais la raison pour laquelle je n’ai finalement pas utilisé BlueSky, c’est l’absence de prise en charge des domaines emoji.
Le firehose de bsky est vraiment amusant, avec un petit côté nostalgique de retour en 2005.
Le week-end dernier, je m’en suis servi pour fabriquer un petit truc très silly : https://bigmood.blue/
En supposant que ce soit un problème d’affichage, on a l’impression que les mêmes images uniques se répètent beaucoup sur un court laps de temps. Si la file se vidait de plus en plus lentement à mesure qu’elle se vide (par exemple 0,5 s/numInQueue, le dernier élément attendant au moins 0,5 seconde et l’arrivée de l’élément suivant dans la file), le flux serait plus régulier, avec moins d’écrans vides et moins de répétitions. Ce serait bien aussi que les images conservent leur ratio d’origine.
Si on pouvait regarder un peu plus longtemps, ce serait une expérience sympa.
On a l’impression de revenir au bon vieux temps de Twitter. À l’époque, on pouvait construire et expérimenter des choses avec l’API.
J’avais même créé un bot qui avait gagné un concours : https://theexceptioncatcher.com/blog/2015/11/how-i-got-my-bo...
C’est une excellente fonctionnalité et, même en mettant de côté les positions politiques, c’est une grosse raison de soutenir BlueSky plutôt que X.
Je me demande aussi si BlueSky, ou des tiers, proposent différents types de dumps sous forme de fichiers zip. Ce serait sans doute mieux pour réduire la charge côté serveur.
À l’époque où les développeurs ordinaires y avaient encore accès, c’était amusant de jouer avec le firehose de Twitter. Je suis content de voir cette idée revenir.
C’est cool. Le contraste est saisissant avec les nouvelles règles d’API verrouillées que Twitter a mises en place après Elon.
Je suis encore furieux que Twitter ait cassé toutes mes automatisations et m’ait demandé 100 dollars par mois. Il me semble que c’est monté à 200 dollars maintenant.
À ce niveau-là, c’est du même ordre que le remboursement de mon prêt auto. Ce n’est pas une somme qu’un particulier lambda peut justifier.
J’ai l’impression que, dans un avenir proche, ces données serviront de données d’entraînement pour l’IA/les LLM.
La démo du firehose en un seul mot est excellente. Des personnes créatives pourraient vraiment construire plein de choses géniales avec ça.
J’ai un compte important sur Twitter, où je publie manuellement des posts, pensées, liens, annonces, etc.
J’ai cherché un moyen de publier automatiquement en cross-post sur Threads et Bluesky, mais je n’en ai pas trouvé. Vous auriez quelque chose à recommander ?