2 points par GN⁺ 2024-11-17 | 1 commentaires | Partager sur WhatsApp
  • 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 delete et 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 delete du 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-post de la collection app.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-post arrive, recherche du texte dans le cache puis, s’il existe, diffusion aux observateurs actuels
  • 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

 
GN⁺ 2024-11-17
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.

    • Plus important encore, il faut vérifier que l’on possède ce domaine. On ne peut pas s’inscrire avec google.com.
    • Cette logique s’applique aussi à X. Sur BlueSky, la vérification de domaine est mappée via DNS vers un identifiant did:plc, et les AppView (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.
    • C’est la possibilité d’utiliser un domaine comme nom d’utilisateur qui m’a fait m’inscrire sur la liste d’attente de BlueSky au départ.
      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.
    • J’ai l’impression que ça prendra le même chemin que Threads et Mastodon. Le résultat sera au mieux tiède, mais tant mieux si vous vous amusez.
  • 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/

    • C’est plutôt chouette, j’aime bien. Ce serait plus propre avec quelque chose comme une file à backoff exponentiel au lieu d’un écran noir et d’images répétées.
      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.
    • L’idée est bonne, mais le clignotement est beaucoup trop rapide. Plutôt que d’afficher directement le firehose, il vaudrait peut-être mieux choisir une image au hasard toutes les secondes.
    • Y a-t-il un moyen de réduire le clignotement ? Je ne suis pas épileptique et j’apprécie l’avertissement préalable, mais au bout d’environ 2 secondes, ça reste franchement désagréable.
      Si on pouvait regarder un peu plus longtemps, ce serait une expérience sympa.
    • Il existe une bande-son parfaite pour ça (avertissement lumières clignotantes) : https://www.youtube.com/watch?v=wNtxgxYY7sI&t=66s
    • Plutôt qu’un « petit côté nostalgique de retour en 2005 », ça ressemble surtout à une dynamique où l’on pousse les gens à investir dans une plateforme, puis à les enfermer pour leur facturer ensuite.
  • 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.

    • Il n’y a que deux issues possibles : soit tout le monde y a accès, soit seulement quelques grandes entreprises. Ce n’est pas idéal, mais la première option est de loin préférable.
    • Il vaut mieux que les données soient ouvertes à tous plutôt que réservées à quelques grandes entreprises.
    • Pour être honnête, rien qu’en marchant dans une rue équipée de caméras de vidéosurveillance, il y a de fortes chances qu’on soit déjà en train de devenir des données d’entraînement pour une IA.
    • Les chercheurs voudront sans doute des données anciennes qui n’ont pas été contaminées par le vomi des 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 ?

    • C’est justement un autre problème, à mon avis. Il n’existe pas de moyen pratique de déplacer ses données de réseaux sociaux, parce que si cela devenait possible, ce serait surtout détourné à mauvais escient.
    • Il existe des apps qui permettent de publier à plusieurs endroits, comme OpenVibe et Yup.