2 คะแนน โดย GN⁺ 2024-11-17 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ข้อมูลสาธารณะของ Bluesky เติบโตจนมีขนาด 15 ล้านผู้ใช้ แล้ว และเมื่อใช้ Jetstream ก็สามารถรับอีเวนต์ทั้งหมดของเครือข่ายแบบเรียลไทม์เพื่อทดลองได้
  • เนื่องจากเป็น firehose ในรูปแบบ WebSocket JSON feed จึงเชื่อมต่อได้แม้จากเบราว์เซอร์ และสามารถเริ่มทดลองข้อมูลเรียลไทม์แบบง่าย ๆ ได้ฟรี
  • แอปตัวอย่างตรวจจับอีเวนต์ delete แล้วแสดงข้อความของโพสต์ที่เพิ่งถูกลบเป็นครั้งสุดท้ายในฟีดชั่วคราวแบบไม่ระบุตัวตน
  • สภาพแวดล้อมสำหรับใช้งานจริงคือเครื่อง shared-cpu-1x 256MB RAM ของ Fly.io พร้อม persistent volume 2GB โดยมีค่าใช้จ่ายเดือนละ $1.94 และ $0.30 ตามลำดับ
  • ไม่สามารถรับประกันได้ว่าแอป firehose ทุกตัวจะรันได้เล็กขนาดนี้ แต่แอปบางประเภทที่ consume ข้อมูลเรียลไทม์สามารถให้บริการได้เพียงพอด้วยอินสแตนซ์ขั้นต่ำ

รับ Bluesky firehose ด้วย Jetstream

  • ข้อมูลของ Bluesky เปิดเผยต่อสาธารณะอย่างมาก และปัจจุบันมีข้อมูลสาธารณะในระดับ 15 ล้านผู้ใช้
  • เมื่อใช้ Jetstream จะสามารถรับทุกสิ่งที่เกิดขึ้นบนเครือข่ายเป็น WebSocket JSON feed แบบเรียลไทม์ได้
  • สามารถเชื่อมต่อกับ firehose ได้โดยตรงจากเบราว์เซอร์ และทำการทดลองง่าย ๆ เช่นสุ่มดึงคำจากโพสต์ที่กำลังถูกโพสต์อยู่ในขณะนั้นได้

แอปขนาดเล็กที่แสดงอีเวนต์การลบ

  • แอปทดลอง deletions.bsky.bad-example.com ฟังอีเวนต์ delete ทั้งหมดจาก firehose และแสดงข้อความที่เพิ่งถูกลบในฟีดชั่วคราวแบบไม่ระบุตัวตน
  • แอปนี้ถูกสร้างขึ้นตอนที่เครือข่าย Bluesky ยังเล็กกว่าปัจจุบันมาก และตอนนี้ความเร็วของเครือข่ายก็เพิ่มขึ้นจนดูสับสนวุ่นวายยิ่งกว่าเดิม
  • ทำงานบนอินสแตนซ์ที่เล็กที่สุดของ Fly.io
    • Fly machine, shared-cpu-1x, 256MB RAM: เดือนละ $1.94
    • 2GB Persistent volume: เดือนละ $0.30
  • ลำดับการทำงานประกอบด้วยแคชแบบเรียบง่ายและการจับคู่กับอีเวนต์การลบ
    • รับอีเวนต์ create-post ใหม่ทั้งหมดในคอลเลกชัน app.bsky.feed.post
    • กรองโพสต์ว่างออก และใช้ การปกปิดข้อมูล (redaction) กับ mention และลิงก์
    • บันทึกข้อความที่จัดระเบียบแล้วลงใน pebbledb โดยใช้คีย์ did+rkey
    • ทุก ๆ ไม่กี่วินาที จะลบช่วงข้อมูลของข้อความที่เก็บไว้นานกว่า 48 ชั่วโมง
    • เมื่อมีอีเวนต์ delete-post เข้ามา จะค้นหาข้อความจากแคช และถ้ามี ก็ broadcast ไปยังผู้สังเกตการณ์ปัจจุบัน
  • แม้ขอบเขตฟีเจอร์จะเล็ก แต่ก็ทำงานได้เสถียรบนอินสแตนซ์ขั้นต่ำของ Fly.io และแอปที่น่าสนใจกว่านี้บางตัวก็อาจให้บริการได้ในระดับขนาดใกล้เคียงกัน

1 ความคิดเห็น

 
GN⁺ 2024-11-17
ความคิดเห็นจาก Hacker News
  • มีสองเหตุผลที่ทำให้ BlueSky ดีมาก: สามารถใช้ชื่อผู้ใช้เป็นโดเมนเว็บไซต์ของตัวเอง ได้ เลยเป็นแบบ @bradgessler.com ได้ และบน iOS ฟังก์ชันคัดลอกแล้ววางรูปภาพลงในข้อความก็ทำงานได้ดี
    บน X/Twitter สิ่งนี้พังมานานแล้ว ยังมีข้อดีอีกมาก แต่สองข้อนี้ทำให้รู้สึกชอบเป็นพิเศษ ถ้าต้องการเส้นทางเริ่มต้น ก็มี starter pack สำหรับ Ruby hacker ที่ทำไว้แล้ว: https://go.bsky.app/HXB2cPh
    และยังมี starter pack กับคอมมูนิตี้อื่น ๆ อีกเยอะมาก

    • ที่สำคัญกว่านั้นคือ ต้องมีการ ยืนยันว่าคุณเป็นเจ้าของโดเมนนั้นจริง จะไปสมัครด้วย google.com ไม่ได้
    • ตรรกะนั้นใช้กับ X ได้เหมือนกัน บน BlueSky การยืนยันโดเมนจะถูกแมปผ่าน DNS ไปยังตัวระบุ did:plc และ AppView ต่าง ๆ (เช่น bsky.app, แอปสมาร์ตโฟนของ BlueSky ฯลฯ) ก็แค่ไปดูที่ plc.directory ซึ่งเป็น “ฐานข้อมูล” ที่ BlueSky เป็นเจ้าของ
      ถ้าจะให้ชื่อผู้ใช้เป็นชื่อโดเมนจริง ๆ BlueSky ต้องรองรับตัวระบุประเภท did:web แต่ตอนนี้ยังไม่รองรับ สุดท้ายแล้วในแง่ที่ชื่อผู้ใช้ถูกแมปเข้ากับฐานข้อมูลภายใน มันก็เหมือน X นั่นแหละ BlueSky ใกล้เคียงกับ Twitter ในยุคก่อนต้องหาเงินคืนให้นักลงทุน และก็พอจะเดิมพันได้ว่าอีก 10 ปีข้างหน้า ฟีเจอร์จะพังเพิ่มขึ้นอีกเพราะต้องโฟกัสกับการถอนทุนคืน ผมอาจเอนเอียงไปทาง ActivityPub นิดหน่อย แต่ก็ยอมรับว่าสถาปัตยกรรมของ BlueSky ดีกว่า
    • ตอนแรกที่ไปลงชื่อรอ BlueSky ก็เพราะฟีเจอร์ใช้โดเมนเป็นชื่อผู้ใช้นี่แหละ
      เมื่อ 11 ปีก่อน ผมเคยทำตัวรวมโซเชียลมีเดียที่ให้สมัครได้เฉพาะผู้ใช้ที่มีโดเมนที่ยืนยันแล้ว โดยใช้โดเมนเป็นชื่อผู้ใช้และใช้โดเมนนั้นยืนยันโปรไฟล์โซเชียลมีเดีย ตอนนั้นเคยลง Show HN ไว้: https://news.ycombinator.com/item?id=6529523
      อาจฟังดูตลก แต่สุดท้ายเหตุผลที่ไม่ได้ใช้ BlueSky คือมันไม่รองรับ โดเมนอีโมจิ
    • น่าจะลงเอยแบบเดียวกับ Threads และ Mastodon ผลลัพธ์อย่างดีที่สุดก็คงแค่กลาง ๆ แต่ก็ดีใจที่คุณสนุกกับมัน
  • bsky firehose สนุกมากจริง ๆ และให้ความรู้สึกโหยหาอดีตเหมือนย้อนกลับไปปี 2005
    สุดสัปดาห์ที่แล้วผมเอามันมาทำของเล็ก ๆ แบบงี่เง่าแต่น่าขำชิ้นหนึ่ง: https://bigmood.blue/

    • ค่อนข้างเจ๋งและผมชอบนะ แต่แทนที่จะเป็นจอดำกับภาพซ้ำ ๆ ถ้ามีอะไรอย่าง คิว exponential backoff น่าจะดูเนียนกว่า
      ถ้ามองว่าเป็นปัญหาเรื่องการแสดงผล มันจะดูเหมือนภาพที่ไม่ซ้ำกันภาพเดิมถูกแสดงซ้ำหลายครั้งในช่วงเวลาสั้น ๆ ถ้าเป็นการระบายคิวให้ช้าลงเมื่อคิวใกล้ว่าง (เช่น 0.5s/numInQueue โดยชิ้นสุดท้ายรออย่างน้อย 0.5 วินาทีและรอให้ชิ้นถัดไปเข้าคิว) น่าจะทำให้จังหวะการไหลดูสม่ำเสมอขึ้น และลดทั้งจอว่างกับภาพซ้ำได้ นอกจากนี้ก็น่าจะดีถ้ารักษาอัตราส่วนภาพเดิมไว้
    • ไอเดียดี แต่ กะพริบเร็วเกินไป บางทีแทนที่จะโชว์ firehose ตรง ๆ อาจดีกว่าถ้าสุ่มมาแสดงทีละภาพทุก 1 วินาที
    • มีวิธีลดการกะพริบไหม? ผมไม่ได้เป็นลมชัก และขอบคุณที่ขึ้นคำเตือนก่อน แต่พอดูไปสัก 2 วินาทีก็ยังรู้สึกไม่สบายพอสมควร
      ถ้าดูได้นานกว่านี้น่าจะเป็นการทดลองที่เจ๋งมาก
    • มีซาวด์แทร็กที่เหมาะเป๊ะเลย (คำเตือนเรื่องแสงกะพริบ): https://www.youtube.com/watch?v=wNtxgxYY7sI&t=66s
    • มากกว่าจะเป็น “ความรู้สึกโหยหาอดีตเหมือนย้อนกลับไปปี 2005” มันกลับให้ความรู้สึกว่าเป็นแนวทางแบบทำให้คนลงทุนลงแรงกับแพลตฟอร์มแล้ว ค่อยเก็บเงินทีหลัง มากกว่า
  • มันให้ความรู้สึกเหมือนได้กลับไปยังช่วงเวลาดี ๆ ของ Twitter สมัยก่อน ตอนนั้นยังสร้างอะไรและทดลองอะไรกับ API ได้
    ผมเคยทำบอตที่ชนะการแข่งขันด้วย: https://theexceptioncatcher.com/blog/2015/11/how-i-got-my-bo...

  • นี่เป็นฟีเจอร์ที่ยอดเยี่ยม และแม้ไม่นับเรื่องจุดยืนทางการเมือง ก็เป็น เหตุผลใหญ่ที่อยากเชียร์ BlueSky มากกว่า X
    ผมก็สงสัยว่า BlueSky หรือบุคคลที่สามมีการปล่อยดัมป์หลายรูปแบบเป็นไฟล์ zip หรือเปล่า น่าจะช่วยลดภาระเซิร์ฟเวอร์ได้ดีกว่า

  • สมัยก่อนตอนที่นักพัฒนาทั่วไปยังเข้าถึงได้ การได้เล่นกับ firehose ของ Twitter สนุกมาก ดีใจที่เห็นไอเดียนี้กลับมาอีก

  • นี่มันเจ๋งมาก ตรงข้ามอย่างชัดเจนกับ กฎ API แบบปิดตายของ Twitter หลังยุค Elon

  • ผมยังหงุดหงิดไม่หายที่ Twitter ทำระบบอัตโนมัติทั้งหมดของผมพัง แล้วบอกให้จ่ายเดือนละ 100 ดอลลาร์ ตอนนี้เหมือนจะขึ้นไปถึง 200 ดอลลาร์แล้ว
    ราคาแค่นั้นพอ ๆ กับค่างวดรถของผมเลย ไม่ใช่จำนวนเงินที่คนธรรมดาจะหาเหตุผลมาจ่ายได้

  • รู้สึกว่าในอนาคตอันใกล้ ข้อมูลนี้น่าจะกลายเป็น ข้อมูลฝึก AI/LLM แบบหนึ่งแน่ ๆ

    • ผลลัพธ์มีอยู่แค่สองแบบ ทุกคนเข้าถึงได้ หรือมีแค่บริษัทยักษ์ใหญ่ไม่กี่รายที่เข้าถึงได้ ถึงจะไม่ใช่อุดมคติ แต่อย่างแรกก็ดีกว่ามาก
    • การเปิดสิทธิ์เข้าถึงข้อมูลให้ทุกคนย่อมดีกว่าให้มีแค่บริษัทยักษ์ใหญ่ไม่กี่ราย
    • พูดอย่างเป็นธรรม แค่เดินอยู่บนถนนที่มีกล้องวงจรปิด ก็มีโอกาสสูงแล้วว่าคุณกำลังกลายเป็นข้อมูลฝึกของ AI บางตัว
    • นักวิจัยน่าจะอยากได้ ข้อมูลเก่า ที่ยังไม่ปนเปื้อนด้วยเศษซากจาก LLM
  • เดโม firehose แบบคำเดียวทำได้ยอดเยี่ยมมาก ดูแล้วรู้สึกว่าคนสร้างสรรค์น่าจะเอาสิ่งนี้ไปทำของเจ๋ง ๆ ได้อีกมาก

  • ผมมีบัญชีสำคัญบน Twitter และยังโพสต์ข้อความ ความคิด ลิงก์ และประกาศต่าง ๆ ลงที่นั่นด้วยตัวเอง
    ผมพยายามหาวิธีโพสต์ข้ามไป Threads กับ Bluesky แบบอัตโนมัติ แต่ยังหาไม่เจอ มีวิธีไหนที่แนะนำไหม?

    • ผมว่าตรงนี้ก็เป็นอีกปัญหาหนึ่ง ไม่มีวิธีที่ใช้งานได้จริงในการย้ายข้อมูลโซเชียลมีเดีย และถ้าทำได้ ส่วนใหญ่ก็น่าจะถูกเอาไปใช้ในทางที่ผิด
    • มีแอปอย่าง OpenVibe และ Yup ที่ช่วยให้โพสต์ได้หลายที่