महीने में $2.50 से कम में Bluesky firehose को consume करना
(bsky.bad-example.com)- Bluesky का public data अब 1.5 करोड़ users के स्तर तक बढ़ चुका है, और Jetstream का उपयोग करके पूरे network events को real time में लेकर उन पर experiment किया जा सकता है
- यह WebSocket JSON feed के रूप में firehose है, इसलिए browser से भी connect किया जा सकता है, और simple real-time data experiments मुफ्त में शुरू किए जा सकते हैं
- उदाहरण app
deleteevents को detect करता है और अभी-अभी delete किए गए post text को anonymized, गायब हो जाने वाली feed में आखिरी बार दिखाता है - production environment में Fly.io की shared-cpu-1x 256MB RAM machine और 2GB persistent volume का उपयोग है, जिनकी लागत क्रमशः $1.94 और $0.30 प्रति माह है
- यह गारंटी नहीं दी जा सकती कि हर firehose app इतना छोटा चलेगा, लेकिन कुछ real-time consumer apps केवल minimum instance पर भी पर्याप्त रूप से चल सकते हैं
Jetstream से Bluesky firehose पाना
- Bluesky का data बहुत public है, और फिलहाल 1.5 करोड़ users के स्तर का public data मौजूद है
- Jetstream का उपयोग करने पर network में होने वाली हर चीज़ को real-time WebSocket JSON feed के रूप में पाया जा सकता है
- browser से सीधे firehose से connect होकर अभी पोस्ट हो रहे लेखों से random शब्द चुनने जैसे simple experiments भी किए जा सकते हैं
delete events दिखाने वाला छोटा app
- experimental app deletions.bsky.bad-example.com firehose में सभी
deleteevents को सुनता है और अभी delete किए गए text को anonymized, गायब हो जाने वाली feed में दिखाता है - यह app तब बनाया गया था जब Bluesky network अभी की तुलना में बहुत छोटा था, और अब network की गति इतनी बढ़ चुकी है कि वह पहले से कहीं अधिक अव्यवस्थित महसूस हो सकती है
- यह Fly.io के सबसे छोटे instance पर चलता है
- Fly machine, shared-cpu-1x, 256MB RAM: $1.94 प्रति माह
- 2GB Persistent volume: $0.30 प्रति माह
- इसका काम करने का flow simple cache और delete event matching पर आधारित है
app.bsky.feed.postcollection के सभी नएcreate-postevents प्राप्त किए जाते हैं- खाली posts को filter किया जाता है, और mentions तथा links पर redaction लागू की जाती है
- साफ़ किया गया text
did+rkeykey के साथ pebbledb में store किया जाता है - हर कुछ सेकंड में 48 घंटे से पुराने stored text को range delete किया जाता है
delete-postevent आने पर cache में text ढूंढा जाता है, और मिलने पर उसे वर्तमान observers को broadcast किया जाता है
- feature scope छोटा है, लेकिन यह Fly.io के minimum instance पर स्थिर रूप से चलता है, और कुछ अधिक दिलचस्प apps भी इसी तरह के scale पर चलाए जा सकते हैं
1 टिप्पणियां
Hacker News टिप्पणियां
BlueSky अच्छा लगने की दो वजहें हैं: यूज़रनेम के रूप में अपने वेबसाइट डोमेन का इस्तेमाल कर सकते हैं, जैसे @bradgessler.com, और iOS पर मैसेज में इमेज copy-paste करने वाला फीचर ठीक से काम करता है
X/Twitter में यह काफी समय से टूटा हुआ था। फायदे और भी हैं, लेकिन ये दो खास तौर पर अच्छे लगते हैं। अगर शुरुआत के लिए रास्ता चाहिए, तो Ruby हैकर्स के लिए एक starter pack भी बनाया है: https://go.bsky.app/HXB2cPh
दूसरे starter packs और communities भी बहुत सारे हैं
did:plcidentifier से map होती है, औरAppView(bsky.app, BlueSky smartphone app आदि) सिर्फ plc.directory को देखते हैं, जो BlueSky की owned “database” हैयूज़रनेम को सचमुच domain name बनाने के लिए BlueSky को
did:webकिस्म के identifiers support करने होंगे, लेकिन अभी ऐसा नहीं है। आखिरकार यूज़रनेम internal database से map होता है, इस मामले में यह X जैसा ही है। BlueSky उस दौर के Twitter जैसा है जब उसे investors को पैसा लौटाना बाकी था, और मैं शर्त लगा सकता हूं कि 10 साल बाद investment वसूलने पर focus करते-करते इसके और ज्यादा features टूट जाएंगे। मैं ActivityPub की तरफ थोड़ा biased हूं, लेकिन मानता हूं कि BlueSky का architecture बेहतर है11 साल पहले मैंने एक social media aggregator बनाया था जिसमें signup के लिए users के पास verified domain होना जरूरी था; domain को username की तरह इस्तेमाल किया जाता था और उसी domain से social media profile authenticate होती थी। उस समय का Show HN: https://news.ycombinator.com/item?id=6529523
यह मजाकिया लग सकता है, लेकिन आखिर में BlueSky इस्तेमाल न करने की वजह यह थी कि वह emoji domains support नहीं करता था
bsky firehose सचमुच मजेदार है, और 2005 में लौट जाने जैसा एक nostalgic अहसास देता है
पिछले weekend मैंने इससे एक बहुत silly-सी छोटी चीज बनाई: https://bigmood.blue/
अगर मान लें कि समस्या display के तरीके की है, तो ऐसा दिखता है कि वही unique image थोड़े समय में कई बार repeat हो रही है। queue खाली होने लगे तो उसे और धीरे-धीरे drain किया जाए (जैसे 0.5s/numInQueue, आखिरी item कम से कम 0.5 सेकंड इंतजार करे और अगला item queue में आने का इंतजार करे), तो flow ज्यादा consistent होगा और खाली screen व repetition दोनों कम होंगे। images अपना original aspect ratio बनाए रखें तो भी अच्छा होगा
अगर इसे थोड़ा ज्यादा देर तक देखा जा सके तो यह शानदार experiment होगा
पुराने Twitter के अच्छे दिनों में लौटने जैसा लगता है। तब API के साथ कुछ बना और experiment कर सकते थे
कभी मैंने एक competition जीतने वाला bot भी बनाया था: https://theexceptioncatcher.com/blog/2015/11/how-i-got-my-bo...
यह शानदार feature है, और political stance को अलग रखकर भी X की तुलना में BlueSky को support करने की बड़ी वजह बनता है
यह भी जानना चाहूंगा कि BlueSky या कोई third party अलग-अलग तरह के dumps zip files में देती है या नहीं। server load कम करने के लिए वह बेहतर लगेगा
पुराने समय में, जब आम developers भी access कर सकते थे, Twitter के firehose से खेलना मजेदार था। उस idea को लौटते देखना exciting है
यह cool है। Elon के बाद Twitter ने जो locked-down नई API rules निकालीं, उनसे इसका तीखा contrast है
अब भी गुस्सा आता है कि Twitter ने मेरी सारी automation तोड़ दी और फिर महीने के 100 डॉलर मांगे। लगता है अब यह 200 डॉलर तक पहुंच गया है
यह तो मेरी car loan payment जितना है। एक आम व्यक्ति के लिए यह justify करने लायक रकम नहीं है
लगता है निकट भविष्य में यह data किसी AI/LLM training data में बदल जाएगा
एक शब्द वाला firehose demo बेहतरीन है। creative लोग इससे सचमुच बहुत सारी शानदार चीजें बना सकते हैं
Twitter पर मेरा एक महत्वपूर्ण account है, जहां मैं posts, thoughts, links, announcements आदि manually डालता हूं
Threads और Bluesky पर automatically cross-post करने का तरीका खोजा, लेकिन नहीं मिला। कोई recommend करने लायक तरीका है?