2 điểm bởi GN⁺ 2024-11-17 | 1 bình luận | Chia sẻ qua WhatsApp
  • Dữ liệu công khai của Bluesky đã tăng lên quy mô 15 triệu người dùng, và với Jetstream, bạn có thể nhận toàn bộ sự kiện trên mạng theo thời gian thực để thử nghiệm
  • Vì đây là firehose dưới dạng WebSocket JSON feed, bạn thậm chí có thể kết nối từ trình duyệt, và có thể bắt đầu các thử nghiệm dữ liệu thời gian thực đơn giản miễn phí
  • Ứng dụng ví dụ phát hiện sự kiện delete và hiển thị lần cuối văn bản bài đăng vừa bị xóa trên một feed ẩn danh, tự biến mất
  • Môi trường vận hành là máy shared-cpu-1x 256MB RAM của Fly.io cùng volume bền vững 2GB, với chi phí lần lượt là 1,94 USD/tháng và 0,30 USD/tháng
  • Không thể đảm bảo mọi ứng dụng firehose đều chạy nhỏ gọn như vậy, nhưng một số ứng dụng tiêu thụ thời gian thực vẫn có thể vận hành đầy đủ chỉ với instance tối thiểu

Nhận firehose của Bluesky bằng Jetstream

  • Dữ liệu của Bluesky có tính công khai rất cao, và hiện đã có dữ liệu công khai ở quy mô 15 triệu người dùng
  • Nếu dùng Jetstream, bạn có thể nhận mọi thứ xảy ra trên mạng dưới dạng WebSocket JSON feed theo thời gian thực
  • Thậm chí có thể kết nối trực tiếp với firehose từ trình duyệt để làm những thử nghiệm đơn giản như chọn ngẫu nhiên các từ từ những bài viết đang được đăng

Một ứng dụng nhỏ hiển thị sự kiện xóa

  • Ứng dụng thử nghiệm deletions.bsky.bad-example.com lắng nghe mọi sự kiện delete từ firehose và hiển thị văn bản vừa bị xóa trên một feed ẩn danh, tự biến mất
  • Ứng dụng này được tạo ra khi mạng Bluesky còn nhỏ hơn rất nhiều so với hiện tại, còn bây giờ tốc độ của mạng đã tăng nhanh đến mức hỗn loạn hơn nhiều
  • Ứng dụng chạy trên instance nhỏ nhất của Fly.io
    • Fly machine, shared-cpu-1x, 256MB RAM: 1,94 USD/tháng
    • 2GB Persistent volume: 0,30 USD/tháng
  • Luồng hoạt động gồm cache đơn giản và đối chiếu với sự kiện xóa
    • Nhận mọi sự kiện create-post mới trong collection app.bsky.feed.post
    • Lọc các bài đăng rỗng, rồi áp dụng che giấu (redaction) cho mention và liên kết
    • Lưu văn bản đã làm sạch vào pebbledb bằng khóa did+rkey
    • Cứ vài giây lại xóa theo phạm vi các văn bản đã lưu cũ hơn 48 giờ
    • Khi có sự kiện delete-post, ứng dụng tìm văn bản trong cache và nếu có thì phát tới những người đang theo dõi
  • Phạm vi tính năng tuy nhỏ nhưng vẫn chạy ổn định trên instance tối thiểu của Fly.io, và một số ứng dụng thú vị hơn cũng có thể được vận hành ở quy mô tương tự

1 bình luận

 
GN⁺ 2024-11-17
Ý kiến trên Hacker News
  • Có hai lý do khiến BlueSky hay: có thể dùng tên miền website của mình làm tên người dùng, như @bradgessler.com, và tính năng sao chép rồi dán ảnh vào tin nhắn trên iOS hoạt động tốt
    Trên X/Twitter, việc này đã hỏng từ lâu. Còn nhiều điểm mạnh khác, nhưng hai điểm này đặc biệt khiến tôi thấy thích. Nếu cần lối vào để bắt đầu, tôi cũng đã tạo một starter pack cho các hacker Ruby: https://go.bsky.app/HXB2cPh
    Ngoài ra còn có rất nhiều starter pack và cộng đồng khác

    • Quan trọng hơn là phải xác minh rằng bạn sở hữu tên miền đó. Bạn không thể đăng ký bằng google.com
    • Lập luận đó cũng áp dụng cho X. Trên BlueSky, xác minh tên miền được ánh xạ qua DNS tới định danh did:plc, và các AppView (bsky.app, ứng dụng smartphone BlueSky, v.v.) chỉ tra cứu plc.directory, “cơ sở dữ liệu” do BlueSky sở hữu
      Để tên người dùng thực sự trở thành tên miền, BlueSky phải hỗ trợ loại định danh did:web, nhưng hiện tại thì chưa. Rốt cuộc, ở điểm tên người dùng được ánh xạ vào cơ sở dữ liệu nội bộ thì cũng giống X. BlueSky giống Twitter trước thời điểm phải hoàn tiền cho nhà đầu tư hơn, và có thể cược rằng 10 năm nữa họ sẽ làm hỏng thêm nhiều tính năng vì tập trung thu hồi vốn đầu tư. Dù tôi có hơi thiên về ActivityPub, tôi vẫn thừa nhận kiến trúc của BlueSky tốt hơn
    • Tính năng dùng tên miền làm tên người dùng là lý do ban đầu tôi vào danh sách chờ của BlueSky
      11 năm trước, tôi từng làm một bộ tổng hợp mạng xã hội chỉ cho phép người dùng có tên miền đã xác minh đăng ký; cách làm là dùng tên miền làm tên người dùng và xác thực các hồ sơ mạng xã hội bằng tên miền đó. Show HN khi đó: https://news.ycombinator.com/item?id=6529523
      Nghe có thể buồn cười, nhưng lý do cuối cùng tôi không dùng BlueSky là vì họ không hỗ trợ tên miền emoji
    • Có vẻ sẽ diễn ra giống Threads và Mastodon. Kết quả cùng lắm cũng chỉ là làng nhàng, nhưng mừng là bạn đang tận hưởng nó
  • bsky firehose thật sự rất thú vị, có cảm giác hoài niệm như quay về năm 2005
    Cuối tuần trước tôi đã dùng nó để làm một thứ nhỏ khá ngớ ngẩn: https://bigmood.blue/

    • Khá hay và tôi thích nó. Có lẽ sẽ gọn gàng hơn nếu thay màn hình đen và hình ảnh lặp lại bằng thứ gì đó như hàng đợi exponential backoff
      Giả sử đây là vấn đề ở cách hiển thị, thì có vẻ cùng một ảnh duy nhất bị lặp lại nhiều lần trong thời gian ngắn. Nếu hàng đợi được xả chậm dần khi sắp rỗng (ví dụ: 0.5s/numInQueue, phần tử cuối cùng chờ tối thiểu 0,5 giây rồi đợi phần tử tiếp theo vào hàng đợi) thì dòng chảy có thể đều hơn, ít màn hình trống và ít lặp lại hơn. Sẽ tốt nếu ảnh cũng giữ nguyên tỷ lệ khung hình gốc
    • Ý tưởng hay, nhưng nhấp nháy quá nhanh. Có lẽ thay vì hiển thị thẳng firehose, nên chọn ngẫu nhiên một ảnh mỗi giây
    • Có cách nào giảm nhấp nháy không? Tôi không bị động kinh và cảm ơn vì đã hiện cảnh báo trước, nhưng sau khoảng 2 giây thì vẫn khá khó chịu
      Nếu có thể xem lâu hơn một chút, đây sẽ là một thử nghiệm thú vị
    • Có nhạc nền rất hợp (cảnh báo ánh sáng nhấp nháy): https://www.youtube.com/watch?v=wNtxgxYY7sI&t=66s
    • Thay vì “có cảm giác hoài niệm như quay về năm 2005”, nó giống một xu hướng khiến mọi người đầu tư vào nền tảng rồi trói họ lại và thu phí hơn
  • Cảm giác như quay lại thời kỳ tốt đẹp của Twitter ngày xưa. Khi đó có thể xây dựng và thử nghiệm đủ thứ với API
    Trước đây tôi còn từng tạo một bot thắng một cuộc thi: https://theexceptioncatcher.com/blog/2015/11/how-i-got-my-bo...

  • Đây là một tính năng tuyệt vời, và ngay cả khi bỏ qua lập trường chính trị, nó vẫn là lý do lớn để ủng hộ BlueSky hơn X
    Tôi cũng tò mò liệu BlueSky hoặc bên thứ ba có cung cấp nhiều loại dump dưới dạng file zip không. Cách đó có vẻ tốt hơn để giảm tải cho máy chủ

  • Ngày trước, khi nhà phát triển bình thường cũng có thể truy cập, việc vọc firehose của Twitter rất vui. Thấy ý tưởng đó quay lại khiến tôi háo hức

  • Cái này hay đấy. Nó tương phản rõ rệt với các quy tắc API mới bị khóa chặt mà Twitter đưa ra sau Elon

  • Tôi vẫn còn bực vì Twitter đã làm hỏng toàn bộ tự động hóa của tôi rồi đòi 100 đô la mỗi tháng. Giờ hình như đã lên tới 200 đô la
    Mức đó ngang tiền vay mua xe của tôi. Đó không phải khoản tiền mà một cá nhân bình thường có thể biện minh được

  • Tôi có cảm giác trong tương lai gần, dữ liệu này sẽ trở thành dữ liệu huấn luyện AI/LLM nào đó

    • Kết quả chỉ có một trong hai: hoặc mọi người đều truy cập được, hoặc chỉ vài tập đoàn lớn truy cập được. Dù không lý tưởng, phương án đầu vẫn tốt hơn nhiều
    • Mở cho tất cả mọi người vẫn tốt hơn là quyền truy cập dữ liệu chỉ nằm trong tay vài tập đoàn lớn
    • Công bằng mà nói, chỉ cần đi trên một con phố có camera CCTV thì nhiều khả năng bạn đã trở thành dữ liệu huấn luyện cho một AI nào đó rồi
    • Các nhà nghiên cứu có lẽ sẽ muốn dữ liệu cũ chưa bị ô nhiễm bởi đống nôn mửa từ LLM
  • Demo firehose một từ rất tuyệt. Tôi nghĩ những người sáng tạo có thể làm ra rất nhiều thứ thật hay với cái này

  • Tôi có một tài khoản quan trọng trên Twitter, nơi tôi đăng thủ công các bài viết, suy nghĩ, liên kết, thông báo, v.v.
    Tôi đã tìm cách tự động đăng chéo lên Threads và Bluesky nhưng chưa thấy. Có cách nào đáng giới thiệu không?

    • Tôi nghĩ đó lại là một vấn đề khác. Không có cách thực tế để chuyển dữ liệu mạng xã hội đi nơi khác, vì nếu có thì phần lớn sẽ bị lạm dụng
    • Có các ứng dụng cho phép đăng lên nhiều nơi như OpenVibeYup