1 पॉइंट द्वारा GN⁺ 2024-07-10 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • PySkyWiFi एक प्रयोग है जिसमें भुगतान से पहले भी उपलब्ध airline mileage account के profile fields को अस्थायी storage की तरह इस्तेमाल कर, लंबी दूरी की उड़ान के दौरान HTTP requests और responses को बेहद धीमी गति से इधर-उधर भेजा गया
  • शुरुआती prototype ने account के name field को update और poll करके chat बनाई, फिर इसे इस तरह बढ़ाया गया कि ground daemon STOCKPRICE: APPL जैसे requests पढ़कर result वापस भेजे
  • अंतिम architecture विमान के अंदर चलने वाले sky proxy और Internet से जुड़े ground daemon में बंटा है, और local curl request के X-PySkyWiFi header से target URL भेजता है
  • transmission में HTTP request को छोटे chunks में तोड़कर DATA, ACK, END segments और 6 अंकों के sequence number से क्रम मिलाया जाता है
  • असली airline account पर लगातार automated requests भेजने का तरीका टाला गया, और final test GitHub Gist के जरिए blog homepage को curl से call करके कुछ मिनट बाद HTML response पाने तक सीमित रहा

भुगतान से पहले Wi-Fi portal में मिला bypass channel

  • विमान का Wi-Fi login page भुगतान मांगता था, लेकिन भुगतान से पहले भी airline mileage account login मुफ्त में allow था
  • Profile edit screen के name field को देखकर लगा कि इस value को बाहरी दुनिया से data भेजने-लाने वाले छोटे communication channel की तरह इस्तेमाल किया जा सकता है
  • Implementation language के लिए पहले Go सोचा गया था, लेकिन Python इस्तेमाल करने पर tool का नाम PySkyWiFi रखा जा सकता था, इसलिए Python चुना गया
  • Source code PySkyWiFi पर public है

Prototype 1: name field से बनी instant messaging

  • दो clients ने उसी airline mileage account में login करने के बाद, name field को बारी-बारी update और read करके messages exchange किए
    • एक side name को Hello how are you में बदलती है, तो दूसरी side उसे read करती है
    • फिर Im fine how are you में बदलने पर पहली side reply देखती है
  • UI में सीधे name बदलना झंझटभरा था, इसलिए इसे command-line tool से automate किया गया
    • Tool website में login करके test account के name field को message से update करता है
    • हर कुछ seconds में name field को poll करता है, और value बदलने पर उसे दूसरे व्यक्ति के reply के रूप में print करता है
  • असली airline mileage account पर आगे automated data न भेजने का फैसला किया गया, और केवल name को करीब 10 बार तेजी से update करके देखा गया कि सब सफल होते हैं या नहीं
    • इस result से संकेत मिला कि उस account ने request rate या count पर शायद limit नहीं लगाई थी
  • आगे की development GitHub Gists और local files में उसी सिद्धांत को दोहराकर की गई
    • क्योंकि airline mileage account की तुलना में repeated development तेज और आसान थी

Prototype 2: ground daemon से बाहरी जानकारी लाना

  • अगले चरण में जमीन पर या cloud में Internet-connected computer पर daemon चलाया गया
  • Daemon airline mileage account के name field को लगातार poll करता है और विमान से भेजे गए structured requests खोजता है
    • उदाहरण: STOCKPRICE: APPL
    • उदाहरण: SCORE: MANUNITED
  • नया request मिलने पर daemon उसे parse करता है, संबंधित API से जानकारी लाता है, और airline mileage account के जरिए विमान की तरफ वापस भेजता है
  • इस चरण से simple chat से आगे बढ़कर stock prices या sports scores जैसी real-time information lookup संभव हो गई

sky proxy और ground daemon से बना पूरा architecture

  • PySkyWiFi एक TCP/IP-जैसा protocol है, जो पूरे HTTP request को airline mileage account में डालता है, और ground computer असली HTTP request चलाकर response को उसी तरह वापस upload करता है
  • Components दो हैं
    • sky proxy: विमान के अंदर laptop पर चलने वाला proxy
    • ground daemon: घर या cloud में Internet-connected computer पर चलने वाला daemon
  • इस्तेमाल से पहले ground daemon को पहले चलाया जाता है, फिर विमान में Wi-Fi से connect करके laptop पर sky proxy चलाया जाता है
  • User curl जैसे tool से local proxy को HTTP request भेजता है
    • उदाहरण: curl localhost:1234 -H "X-PySkyWiFi: example.com"
    • असली target URL X-PySkyWiFi custom header में रखा जाता है
  • Ground daemon X-PySkyWiFi header को हटाता है और इसे target website तक routing के लिए इस्तेमाल करता है
    • Request body और अन्य headers वैसे ही forward किए जाते हैं
  • पूरी प्रक्रिया के अंत में सामान्य Internet request की तरह HTTP response मिलता है, लेकिन aircraft network की स्थिति के हिसाब से request कई मिनट तक रुकी रह सकती है और speed भी प्रति second कुछ bytes के स्तर की हो सकती है

chunks, ACK, और दूसरे account से HTTP round trip

  • sky proxy curl request लेकर पूरे HTTP request को chunks में बांटता है
    • क्योंकि airline mileage account के name field में एक बार में बहुत कम data आ सकता है
  • हर chunk पहले airline mileage account के name field में क्रम से लिखा जाता है
  • ground daemon account को poll करते हुए नया chunk मिलने पर उसे read करता है, और अगला chunk भेजा जा सकता है यह बताने वाला acknowledgement छोड़ता है
  • पूरा HTTP request reassemble होने पर ground daemon Internet पर असली request भेजता है
  • HTTP response उल्टी दिशा में उसी प्रक्रिया से गुजरता है
    • ground daemon response को chunks में बांटकर भेजता है
    • Implementation को simple रखने के लिए response chunks दूसरे airline mileage account का इस्तेमाल करते हैं
    • sky proxy chunks read करके HTTP response को reassemble करता है और original curl call को return करता है

transport layer और network layer की जिम्मेदारियां अलग करना

  • PySkyWiFi की communication logic transport layer और network layer में बंटी है
  • Transport layer तय करती है कि कौन-सा data किस order में भेजना है
    • लंबे message को छोटे chunks में बांटने का तरीका
    • receiver को यह बताने का तरीका कि वह अगला chunk लेने के लिए ready है
    • TCP से बहुत loosely मिलती-जुलती भूमिका
  • Network layer transport layer द्वारा तय data को असली storage में write और read करती है
    • यह airline mileage account, local file, Discord profile जैसे storage हो सकते हैं
  • यह separation नए airline mileage platform जोड़ना आसान बनाता है
    • केवल नई network layer implement करनी होती है, transport layer जैसी है वैसी बनी रहती है
    • Test के लिए network layer airline mileage account की जगह local files read/write कर सकती है

DATA, ACK, END से क्रम मिलाने के transmission rules

  • PySkyWiFi transport connection दो pipes से बना है
    • हर client के पास लिखने के लिए SEND pipe और पढ़ने के लिए RECV pipe होता है
    • Airline mileage accounts को pipe की तरह इस्तेमाल किया जा सकता है
  • PSWF client किसी एक समय में केवल send या receive में से एक ही कर सकता है
    • Send mode में वह दूसरे पक्ष द्वारा भेजा गया data नहीं देख पाता
    • Receive mode में data भेजने पर भी दूसरा पक्ष उसे नहीं देख पाता
    • यह TCP की तरह कभी भी दोनों दिशाओं में send/receive करने वाला तरीका नहीं है
  • लंबे messages DATA, ACK, END segments से transmit होते हैं
    • DATA: character D, 6 अंकों में padded sequence number, और असली chunk data से बना होता है
    • उदाहरण: D000451adline": "Mudslide in Wigan causes m
    • ACK: character A और confirm किए जाने वाले 6 अंकों के sequence number से बना होता है
    • उदाहरण: A000451
    • END: केवल character E से message समाप्ति दिखाता है
  • Sender DATA भेजने के बाद उसी sequence number का ACK मिलने तक इंतजार करता है
    • A000451 मिलने पर माना जाता है कि 000451 chunk process हो गया है और 000452 chunk भेजा जाता है
  • Receiver END देखता है तो message को समाप्त मानता है, और sender व receiver roles बदल लेते हैं

network layer implementation interface

  • Network layer storage में data write और read करने वाला simple interface देती है
  • जरूरी operations दो हैं
    • send(msg: str): msg को storage में record करता है
    • recv() -> str: storage से message read करता है
  • Airline mileage-based implementation में ये दोनों operations account के name field को write और read करने की actions बन जाते हैं
  • जरूरी attributes भी दो हैं
    • sleep_for: RECV pipe को poll करने के बीच transport layer कितने seconds wait करेगी
    • segment_data_size: एक segment में आने वाले characters की संख्या
  • sleep_for को file जैसे test implementations में कम रखा जा सकता है, लेकिन airline mileage account implementation में remote server पर बहुत ज्यादा requests न भेजे जाएं, इसलिए इसे कम-से-कम कुछ seconds रखना चाहिए
  • segment_data_size इस्तेमाल किए जा रहे airline mileage account field की maximum size के बराबर होना चाहिए, और उदाहरण करीब 20 characters का है
  • Optional hooks दो हैं
    • connect_send(): SEND pipe initialization पर call होता है, और airline mileage implementation में username और password से login करके cookies पाने के लिए इस्तेमाल हो सकता है
    • connect_recv(): RECV pipe initialization पर call होता है

base26 encoding और bandwidth सुधार के ideas

  • Airline mileage HTML form name में non-alphabet characters allow न कर सकता है
    • Stephen allow हो सकता है
    • GET /data?id=5 reject हो सकता है
  • इससे बचने के लिए network layer को segments airline mileage account में लिखने से पहले base26 में encode करना चाहिए
    • base26 string को केवल A से Z तक के characters इस्तेमाल करके represent करता है
    • Byte string को बड़े number में बदलकर, उसे base-26 number की तरह A~Z characters से represent करता है
    • उदाहरण: b26_encode("Hello world") CZEZINADXFFTZEIDPKM return करता है
  • Transport layer को इस encoding की जानकारी जरूरी नहीं है
    • Network layer bytes को base26 में बदलकर record करती है, और read करते समय फिर bytes में restore करती है
  • base26 string को काफी लंबा बना देता है और bandwidth घटाता है
    • Uppercase और lowercase दोनों इस्तेमाल करने वाले base52 से यह छोटा हो सकता है, लेकिन इसे version 2 improvement के रूप में छोड़ा गया
  • Segment size बढ़ाकर bandwidth बढ़ाई जा सकती है
    • अगर एक field केवल 20 characters store कर सकता है, तब भी 20-character वाले 5 fields को एक साथ write करने पर एक request में 100-character segment भेजा जा सकता है
    • Receiver 5 fields को एक request में read करके फिर जोड़ सकता है

HTTP CONNECT से बची improvement की गुंजाइश और final test

  • PySkyWiFi में manually HTTP requests भेजने-लाने के बजाय HTTP CONNECT requests इस्तेमाल करने पर बेहतर tunnel बनाया जा सकता है
  • CONNECT वह तरीका है जिसे अधिकतर HTTP proxies इस्तेमाल करते हैं, और इसे इस्तेमाल करने पर PySkyWiFi system-level proxy की तरह काम करके browser requests भी handle कर सकता है
  • CONNECT इस्तेमाल करने पर PySkyWiFi target website के साथ सीधे TLS connection negotiate करता है, इसलिए airline mileage account से गुजरने वाला traffic encrypted रहता है
  • नुकसान यह है कि implementation work बहुत बढ़ जाता है
  • Final test में GitHub Gist के जरिए data tunnel करके curl से blog homepage load किया गया, और कुछ मिनट बाद HTML response मिला

1 टिप्पणियां

 
GN⁺ 2024-07-10
Hacker News की राय
  • कई दशक पहले मेरे जीवनसाथी Google Voice SMS को सीधे Gmail इनबॉक्स में पढ़कर जवाब देते थे, और चूँकि उन्हें मोबाइल फोन पसंद नहीं थे, वे unlimited 3G वाला पुराना Kindle Keyboard साथ रखते थे
    Kindle के साधारण browser से low-spec Gmail स्क्रीन खुल जाती थी, इसलिए उसे बिना मासिक शुल्क वाले SMS device की तरह इस्तेमाल किया जा सकता था; बस नई SMS notification की समस्या थी
    इसलिए jailbreak करने के बाद home screen पर counter लगाने की कोशिश करते हुए विचार आया कि Kindle device name के पास counter रखा जा सकता है, जिसे Amazon account में बदला जा सकता था
    Home server पर browser automation से Amazon में login कराकर device name को My Kindle (x) में बदलवाया, जहाँ x unread Google Voice SMS की संख्या थी, और Kindle एक मिनट के भीतर home screen name update कर देता था; यह कई वर्षों तक अच्छे से चला

    • मुझे याद है कि 3G Kindle का AT&T bill बहुत भारी था
      याद है कि कुछ bytes भी कम करने से लगभग एक million dollars की बचत हो सकती थी
    • मैंने यात्रा पर जा रहे एक सहकर्मी को Kindle Keyboard उधार दिया था, जो Mexico में चोरी हो गया
      उस समय वह शायद सबसे पुराने working Kindle में से एक रहा होगा, इसलिए चोर ने बस bag में पड़ी चीज उठा ली होगी
      बाद में flea market में 20 dollars का एक और Kindle Keyboard मिला, लेकिन 6 महीने बाद battery खत्म हो गई; device अभी भी मेरे पास है, इसलिए replacement battery की लागत जानने की उत्सुकता है
    • वह free 3G वाकई कमाल का था
      Browser में Gmail किसी तरह चल जाता था, और मैंने Kindle-friendly Zork website भी बनाई थी जहाँ कई zmachine ROM में से चुनकर text game खेला जा सकता था
      कुछ news sites में featured होने पर उसे कुछ हद तक प्रतिक्रिया भी मिली
    • मैंने भी ऐसा किया था
      Kindle का नाम बदलने वाला clever integration तो नहीं था, लेकिन unlimited 3G वाले Keyboard Kindle से कुछ समय तक SMS भेजे थे
    • Smartphone खरीदने से पहले लंबी road trips में Kindle Keyboard से directions देखता था
      Google Maps website किसी तरह चल जाती थी
  • पहले कभी Italy से Greece जाने वाली लगभग 20 घंटे की ferry ली थी; वहाँ satellite internet आधारित paid Wi-Fi था, लेकिन मैं भुगतान नहीं करना चाहता था
    Payment के लिए Stripe access खुला था, और पता चला कि stripe.com के developer docs समेत सभी pages access किए जा सकते हैं, इसलिए मैंने images बार-बार download करके bandwidth बर्बाद करना शुरू कर दिया
    फिर याद आया कि Stripe के काम करने के लिए Fastly CDN access चाहिए और Reddit भी Fastly इस्तेमाल करता है; Stripe से connect करने के बाद HTTP Host header को reddit.com में बदल दिया तो Reddit देखा जा सकता था
    Images नहीं चलीं क्योंकि i.redd.it Fastly पर नहीं था, लेकिन /etc/hosts में old.reddit.com को Stripe के Fastly IP से जोड़कर और डरावनी TLS error ignore करके login भी हो गया

    • इस तरह कई gigabytes docs download करके आप जिनको नुकसान पहुँचाते हैं, वे संभवतः उस service के लिए पैसे देने वाले विमान में बैठे यात्री होते हैं
      धीमे connection की वजह से अगर वे दोबारा न खरीदें तो provider company को भी नुकसान होता है, और Stripe की upload bandwidth cost भी बढ़ सकती है
      मैं तो आसपास के लोगों पर बुरा असर न पड़े, इस वजह से cellular पर भी downloads से बचता हूँ
    • समझ नहीं आता कि ऐसे व्यवहार से ठीक-ठीक हासिल क्या होता है
      Blocked connection पर कहाँ तक access मिल सकता है, यह explore करने वाला intellectual experiment समझ आता है, लेकिन जानबूझकर bandwidth बर्बाद करना public restroom का नल खुला छोड़कर पानी बहाने या toilet जाम करके overflow कराने जैसा है
    • वह domain fronting है, और अब सभी बड़े CDN में block है
      https://en.wikipedia.org/wiki/Domain_fronting
    • अगली बार शायद paid service देने की हिम्मत करने के लिए hotel का पानी खुला छोड़कर सबक सिखाया होगा
    • मुझे हैरानी है कि जिस service के लिए आप पैसे नहीं देना चाहते थे, उसके बारे में आपकी पहली instinct functionality का दुरुपयोग या degradation करने की क्यों थी
  • कुछ हफ्ते पहले mall में बच्चों की class के लिए छोड़ने गया और free Wi-Fi इस्तेमाल करने की कोशिश की; laptop login तो successful था, लेकिन बताया कि internet नहीं चल रहा
    Default gateway check किया तो Cisco modem से connected था, diagnostic tools और connected devices की list दिखी, लेकिन internet connection बंद था
    Phone से model search किया तो पता चला admin account serial number होता है और password blank छोड़ा जाता है; example pattern भी था, और connected devices में से एक का नाम बिल्कुल उसी pattern जैसा दिख रहा था
    उसी से login करके internet button on किया, 15 seconds बाद वह green हो गया, और device password भी नया set कर दिया

    • परिवार से मिलने गया था, तब एक बार पड़ोसी के unsecured Wi-Fi से connect होकर company VPN में जाने की कोशिश की
      VPN connect नहीं हो रहा था, और router में आसानी से जा सकता था, इसलिए MTU settings बदल दीं; उसके बाद तुरंत सही से काम करने लगा
  • ऐसी hacking मुझे अपने असली अर्थ में शानदार लगती है और पसंद है
    हालांकि हाल में check करने पर लगा कि skywifi में global DNS payment के बिना भी सही resolve हो जाता है, और जिस flight में मैं था उसमें शायद साधारण iodine tunnel भी चल जाता
    https://github.com/yarrick/iodine

    • कुछ साल पहले मैंने सभी के लिए accessible public iodine service चलाई थी
      Abuse reports से बचने के लिए server का external traffic Tor से route किया, कौन-से train, hotel और airport networks पर यह काम करता है उसके logs भी collect किए, और दूसरे tunneling protocols भी provide किए
      कुछ समय तक यह मजेदार project था; काश इसे चलते रहने दिया होता
      आजकल कुछ DNS servers, खासकर Google, DNS requests के uppercase/lowercase को randomize करते हैं, जिससे कुछ encodings बुरी तरह टूट जाती हैं, इसलिए DNS tunneling थोड़ी और मुश्किल हो गई है
    • 6 साल पहले एक दूसरी airline Wi-Fi पर iodine चला था
      Idea और principle मजेदार हैं, लेकिन speed के कारण practical use में लगभग बेकार है; UDP के ऊपर messenger जैसा कुछ चलाएँ तो अलग बात है ;-)
    • अगर firewall में DNS allowed है, तो DNS protocol से छेड़छाड़ करने के बजाय WireGuard को UDP/53 पर इस्तेमाल करना ही ठीक नहीं होगा?
  • “मैं हेडफोन चार्ज करना भूल गया था, इसलिए Limp Bizkit लैपटॉप स्पीकर से बजने लगा। शुक्र है, विमान में बाकी लोगों को फर्क पड़ता नहीं दिखा, तो हम सबने मिलकर मज़े किए।”
    ऐसे लोगों में बुनियादी सार्वजनिक शिष्टाचार की कमी होती है
    आसपास के बहुत से लोगों को यकीनन परेशानी हुई होगी, लेकिन शायद वे इतने सभ्य थे कि यह कह नहीं पाए कि बेकार का शोर उन पर मत थोपिए

    • अगर लेखक “यह व्यंग्य है” लिख दे, तो व्यंग्य खराब हो जाता है
    • मैंने इसे मज़ाक के तौर पर पढ़ा
      ऐसे बुनियादी शिष्टाचार से खाली लोग इतने ज़्यादा हैं कि मुझे यह मज़ेदार मज़ाक लगा, और कम-से-कम लेखक सच में ऐसा व्यक्ति नहीं लगता
    • मज़ाक बहुत मज़ेदार नहीं था, लेकिन लेख के विषय से मेल खाता है
      यह एक ऐसे hacker की छवि दिखाता है जो मुफ्त internet की संभावना को अमल में लाने योग्य मौका मानता है, और बाद में इस तरह दूरी बना लेता है कि वह असल में airline system का दुरुपयोग करने वाला व्यक्ति नहीं है, इसलिए शुरुआती tone एक शैलीगत उपकरण लगती है
    • लगता है इंसान इसे “humor” कहते हैं
    • उम्मीद है, जैसा दूसरों ने कहा, यह मज़ाक ही था
      वरना यह बेहद असभ्य और बेरुखा व्यवहार है
  • सोचता हूं क्या मैं ही ऐसा हूं जो विमान में बैठते ही हमेशा इतना थक जाता हूं कि आंखें बंद करके अंत तक इंतज़ार करने के अलावा कुछ नहीं कर पाता
    laptop या किताब निकालने का विचार ही थका देता है, शोर भी बहुत होता है और noise-cancelling headphones भी नहीं हैं, इसलिए ध्यान लगाना मुश्किल है
    घर से निकलकर ट्रेन, ट्राम और security check से गुजरते हुए कम-से-कम 2 घंटे बीत चुके होते हैं, और airport का अस्वस्थ खाना भी मदद नहीं करता
    मौसम भी आधे साल या तो बहुत गर्म या बहुत ठंडा होता है, और 10kg backpack की वजह से लगातार पसीना आता रहता है, इसलिए अंत में विमान के अंदर कुछ करने का मन ही नहीं बचता

    • मुझे वयस्क ADHD है; काम पर focus करना ज़्यादा मुश्किल होता है, लेकिन विमान या दूसरी भीड़-भाड़ वाली जगहों पर उल्टा laser की तरह focus कर पाता हूं
      यह intuition के उलट है, लेकिन सुना है कि कई ADHD brains ऐसे ही काम करते हैं, और विमान में बिताया समय मेरे लिए सबसे productive होता है
    • पहले laptop निकालकर कुछ करने की कोशिश करता था, लेकिन seat pitch घटने के बाद tablet से बड़ी चीज़ निकालना सच में मुश्किल हो गया है
      उसे घुटनों पर टिकाना पड़ता है, या आगे वाला यात्री सीट पीछे कर दे तो screen टूटने का खतरा रहता है; कुछ साल पहले मेरे एक colleague के साथ सच में ऐसा हुआ था
      आजकल बस iPad और noise-cancelling headphones निकालकर फिल्में या TV shows देखता हूं
    • सिर्फ मैं ऐसा नहीं हूं
      मेरा शरीर भी बिल्कुल यही प्रतिक्रिया देता है, और मुझे लगता है इसका संबंध हवा में oxygen level कम होने से है
      समस्या शोर की नहीं, हवा की है; noise-cancelling headphones वाकई बहुत असरदार हैं
      लेकिन कुछ लोग ऐसे भी हैं जिन पर इसका बिल्कुल असर नहीं होता और वे विमान में उपयोगी काम कर लेते हैं
    • मैं बिल्कुल उलटा हूं
      चाहे जितना थका होऊं या नींद की कमी हो, विमान में न सो पाता हूं न थकान महसूस होती है, इसलिए transatlantic flight और भी तकलीफदेह हो जाती है; साथ चलने वाला अगर 8 घंटे सो जाए तो लगता है जैसे मेरा मज़ाक उड़ रहा हो
    • सिर्फ मैं ऐसा नहीं हूं
      flight के दौरान मेरा दिमाग बहुत सुन्न हो जाता है, इसलिए landing तक आंखें बंद रखता हूं; किताब पढ़ने या काम करने की कोशिश भी करूं तो 5–10 मिनट बाद दिमाग बंद हो जाता है
      अजीब बात है कि in-flight meal हर बार पेट फूलने की समस्या कर देता है, इसलिए landing के तुरंत बाद दवा चाहिए होती है
      दिलचस्प है कि दो बार business class में उड़ने पर दिमाग बंद होने से पहले कुछ हद तक पढ़ सका
      लंबी दूरी की train में, अगर travel direction की ओर मुंह करके बैठा हूं, तो सच में काम करना आसान होता है, लेकिन train काफी भीड़भाड़ वाली हो तो दिमाग फिर बंद हो जाता है
  • stock prices, match scores, weather जैसी चीज़ें भेजने की बात देखकर याद आया कि पहले Google text message service के रूप में ऐसी सुविधाएं देता था
    अपना पहला smartphone खरीदने से पहले मैंने इसे बहुत इस्तेमाल किया था; W[ZIP code] को 46645(GOOGL) पर भेजते तो weather SMS में जवाब आता था
    stock:[symbol] भी काम करता था, और कई और features थे जिन्हें अब भूल चुका हूं
    बेशक Google ने इसे बंद कर दिया, लेकिन जब तक चला, काफी शानदार था

    • PHP से काम करने के दिनों में, मैंने SongBuddy नाम का Twitter bot बनाया था जो lyrics के टुकड़े से गाना ढूंढता था
      उस समय Twitter द्वारा support किए जाने वाले SMS DM से कुछ lines भेजते, फिर Google पर " lyrics" search होता, results parse करके artist और title SMS में वापस भेजे जाते
      यह बहुत अच्छे से काम नहीं करता था, लेकिन मुझे इस पर काफी गर्व था
    • मैं जो currency conversion site इस्तेमाल करता हूं उसे एक professor चलाते हैं, और शायद वह university की सीढ़ियों के नीचे छिपाए गए किसी Pentium III computer पर चल रही होगी, फिर भी वह दशकों से जिंदा है और लगता है जिंदगी भर चलेगी
    • मैंने Twilio और AWS instance से SMS↔ChatGPT interface बनाया
      इसके कारण portable satellite communicator inReach Mini 2 से दुनिया में कहीं से भी ChatGPT से सवाल पूछ सकता हूं, और Death Valley के बीचोंबीच भी पूछ पाना काफी अच्छा लगता है
    • मैं उस service को flip phone पर हमेशा इस्तेमाल करता था
      Google search query type करने में समय लगता था और results आने में 1–2 मिनट लग सकते थे, लेकिन न होने से बेहतर था
      इसका उपयोग मुख्यतः उन जगहों का पता खोजने के लिए करता था जहां जाना चाहता था, फिर उसे TomTom में डालता था; समय बहुत बदल गया है
    • जानना चाहता हूं कि यह कब की बात थी
      1995 के आसपास, जब मैं Ericsson की subsidiary, एक telecom research company में काम करता था, तब मेरे मन में ऐसा idea आया था, और मुख्य example flight status updates था
      कोई कल्पना भी नहीं कर सकता था कि numeric keypad पर एक अक्षर डालने के लिए कई बार दबाना पड़ने वाली P2P messaging इतनी popular होगी, इसलिए early web पर data बढ़ने की स्थिति में information services सबसे अच्छा use case लगती थीं
      Teletext भी तब मौजूद था, और उसे scrape करने का एक अलग project भी था
      लेकिन यह सोचना दिलचस्प है कि SMS तक access रखने वाले हमने और आम जनता ने आखिर इसका इस्तेमाल किस लिए किया
  • यह दिलचस्प है कि लेखक abstract shared edit field के ऊपर TCP के काफी करीब पहुंच गया
    यह अपने आप में भी बहुत शानदार tool हो सकता है
    अगर दोनों तरफ shared resource में read और write करने का तरीका high-level पर design कर दिया जाए, तो ऐसा proxy कल्पना कर सकते हैं जो बाकी सब संभालकर उसे SOCKS proxy के रूप में उपलब्ध कराए

    • जहां तक मुझे पता है, paid Boingo airport hotspots पर free internet इस्तेमाल करने के लिए DNS के ऊपर TCP/IP पहले ही implement किया जा चुका है
      आखिरकार free Wi‑Fi standard बन गया और यह कोई बड़ी बात नहीं रही; अब मामला in-flight free Wi‑Fi की लड़ाई तक आ गया है
      अंततः in-flight Wi‑Fi भी हर जगह free हो जाएगा, और कई airlines में यह पहले से ऐसा है
    • हमारे देश की telecom company ने data-limited plans में “unlimited WhatsApp” advertise करना शुरू किया, तब से मैं कई सालों से इसके बारे में सोच रहा हूं
      सिर्फ text चलेगा, images या videos नहीं, लेकिन सामान्य web browsing के लिए काफी होता
  • कुछ साल पहले हमारे विश्वविद्यालय के डीन ने यह कहते हुए कि “games की वजह से attendance पर असर पड़ रहा है”, रात 10 बजे के बाद LAN network बंद करने का फैसला किया था
    implementation का तरीका IP addresses से आने-जाने वाले सारे traffic को block करना था, लेकिन TCP खुद block नहीं किया गया था, और उस समय बहुत नया न रह चुका IPv6 भी वे पूरी तरह भूल गए थे
    इसलिए मैंने IPv6 पर चलने वाला एक सरल P2P chat app बनाया, और अकेली समस्या यह थी कि दोस्तों के साथ IPv6 address share करके उसे contacts में बनाए रखना पड़ता था
    यह अच्छी तरह काम करता था, लेकिन बाद में पता चला कि network के बाहर किसी computer तक tunneling करना कहीं ज्यादा आसान है

  • यह बेकार software और ज्यादा लिखें वाली post और उसके बाद हुई HN चर्चा की याद दिलाने वाला लगभग perfect example लगता है
    क्या यह जिंदगी बदल देता है? शायद नहीं
    क्या इसे बनाने और explore करने की प्रक्रिया मजेदार थी? लगभग निश्चित रूप से
    हमें ऐसी चीजें और ज्यादा बनानी चाहिए
    https://ntietz.com/blog/write-more-useless-software/
    https://news.ycombinator.com/item?id=37911900