1 पॉइंट द्वारा GN⁺ 2024-12-25 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • pISSStream International Space Station (ISS) के यूरिन टैंक की क्षमता रीयल-टाइम में दिखाने वाला ऐप है, जो macOS menu bar के साथ iOS, watchOS और visionOS को सपोर्ट करता है
  • डेटा NASA की आधिकारिक पब्लिक ISS telemetry stream से Lightstreamer के जरिए लिया जाता है, और जब ground station सिग्नल रिसीव कर रहा होता है तब लेटेस्ट tank fill percentage दिखाया जाता है
  • macOS पर menu bar में 🧑🏽‍🚀🚽 और fill percentage दिखता है; connection या telemetry signal कटने पर 🧑🏽‍🚀❗ के साथ आखिरी received value और “Connecting” या “No Signal” status दिखता है
  • iOS और watchOS simple interface के साथ रीयल-टाइम tank level दिखाते हैं, जबकि visionOS ImmersiveSpace API आधारित 3D visualization और spatial audio देता है
  • यह पहला Swift और Apple platform ऐप होने के कारण stale data handling और error handling में बहुत सक्रिय नहीं है; bug fixes के लिए Pull Request स्वीकार हैं, लेकिन अन्य ISS statistics जोड़ने की योजना नहीं है

pISSStream क्या करता है

  • pISSStream International Space Station के यूरिन टैंक की क्षमता रीयल-टाइम में दिखाने वाला ऐप है
  • supported platforms macOS, watchOS, iOS, visionOS हैं
  • मुख्य features इस प्रकार हैं
    • ISS यूरिन टैंक लेवल की real-time monitoring
    • macOS menu bar integration
    • iOS और watchOS apps में real-time updates
    • visionOS में immersive 3D visualization
    • immersive screen में deep-space soundscape आधारित spatial audio
    • Vision Pro के लिए improved UI और custom app icon
    • NASA की official public ISS telemetry stream का Lightstreamer के जरिए उपयोग

Installation और build requirements

  • macOS के लिए latest release DMG Download link से मिल सकता है
  • iOS, watchOS, visionOS के लिए Apple security model के कारण source से build करके अपने developer account से sign करना होगा
  • build prerequisites इस प्रकार हैं
    • Xcode 15.2 या उससे ऊपर
    • Apple Developer account
    • iOS app के लिए iOS 17.0 या उससे ऊपर वाला device
    • Apple Vision Pro या visionOS simulator
  • basic build process में repository clone करने के बाद pISSStream.xcodeproj को Xcode में खोलना, Signing & Capabilities में development team चुनना, फिर target device पर build और run करना शामिल है
  • Apple Developer account न होने पर भी free provisioning profile से simulator या device पर अधिकतम 7 दिनों तक चला सकते हैं

visionOS development और deployment

  • visionOS development के लिए Xcode में visionOS SDK installed होना चाहिए
  • app 3D visualization experience के लिए ImmersiveSpace API का उपयोग करता है और immersion बढ़ाने के लिए spatial audio शामिल करता है
  • requirements इस प्रकार हैं
    • Apple silicon Mac
    • Xcode 15.2 या उससे ऊपर
    • Apple Developer Account
    • Developer Mode enabled Vision Pro
    • एक ही Wi-Fi network से जुड़े Mac और Vision Pro
  • wireless development process में Vision Pro पर Developer Mode और Remote Development allow करने के बाद, Xcode के Devices and Simulators में Vision Pro को pair करना और build target के रूप में चुनकर run करना शामिल है
  • आम समस्याएं इस प्रकार हैं
    • “Device not found”: Wi-Fi connection check करना जरूरी
    • “Unauthorized device”: Vision Pro को फिर से pair करना जरूरी
    • “Build failed”: provisioning profile update करना जरूरी
    • “No paired Vision Pro found”: Vision Pro connection और pairing check करना जरूरी
    • “Invalid signing”: developer account और provisioning profile check करना जरूरी

Platform के हिसाब से उपयोग

  • macOS पर, जब Lightstreamer connection और ISS telemetry signal reception दोनों सही हों, तो menu bar item में 🧑🏽‍🚀🚽 और fill percentage दिखता है
  • connection या ISS telemetry signal कटने पर menu bar item 🧑🏽‍🚀❗ और आखिरी received value दिखाता है, और menu में “Connecting” या “No Signal” दिखता है
  • iOS पर app चलाने पर simple interface में current tank level देखा जा सकता है
  • visionOS पर ISS waste tank को immersive 3D में देखा जा सकता है और real-time fill level visualize किया जाता है
  • watchOS पर कलाई से ISS waste tank fill level को real-time में track किया जाता है

बनाने की प्रेरणा और सीमाएं

  • बनाने की प्रेरणा यह थी कि space station के toilet से आने वाले असली real-time telemetry data को पढ़ने वाला joke app एक दोपहर में बनाया जा सकता है—यह बात “हास्यास्पद, लेकिन साथ ही अद्भुत” है
  • Swift सीखने का यह अच्छा बहाना भी था, लेकिन मुख्य motivation app की अपनी absurdity थी
  • known issues इस प्रकार हैं
    • पहला Swift और Apple platform app होने के कारण यह अच्छे coding practices की पराकाष्ठा नहीं है
    • छोटी वजहों से भी अप्रत्याशित तरीकों से टूट सकता है
    • stale data पर सक्रिय रूप से प्रतिक्रिया नहीं देता
    • error handling पर बहुत ज्यादा ध्यान नहीं दिया गया है
  • bug fixes के लिए Pull Request का स्वागत है
  • data stream के बारे में ISS Mimic से पता चला, और ISS Mimic में urine tank level से कहीं ज्यादा और दिलचस्प statistics हैं, लेकिन उन्हें pISSStream में जोड़ने की योजना नहीं है

1 टिप्पणियां

 
GN⁺ 2024-12-25
Hacker News टिप्पणियाँ
  • मुझे https://iss-mimic.github.io/Mimic/ पर यह data stream मिला, और इसमें सिर्फ़ urine tank कितना भरा है उससे कहीं ज़्यादा और दिलचस्प stats हैं
    “मैं इनमें से कुछ भी नहीं जोड़ूँगा” वाली पंक्ति ही प्रोजेक्ट के non-goals बताने का एकदम परफेक्ट तरीका है
    open source communication की best practice के रूप में इससे सीखा जा सकता है

    • न जाने क्यों ऐसा दृश्य दिमाग में आता है कि सारी communication टूट गई है और सिर्फ़ urine tank sensor ही काम कर रहा है
      astronauts tank के बदलाव की दर को Morse code में बदलकर संदेश भेजते हैं, और किसी ADHD वाले इंसान ने यह menu bar app इंस्टॉल किया हुआ है, वह बात समझकर सबको बचा लेता है — ऐसा कोई फ़िल्मी प्लॉट लग रहा है
    • सिर्फ़ https://iss-mimic.github.io/Mimic/ ही नहीं, project page भी ज़रूर पढ़ने लायक है: https://github.com/ISS-Mimic/Mimic
    • अगर वह सारा data मौजूद है, तो ISS और crew के ख़िलाफ़ काफ़ी गंदे social engineering attacks में मदद मिल सकती है
      अब बस यह समस्या बचती है कि ख़ुद को वहाँ तक कैसे भेजा जाए
    • मुझे यह ख़तरनाक जानकारी नहीं पता चलनी चाहिए थी
      अब ISS का SVG बनाकर इस data से उसे animate करने में बहुत ज़्यादा समय लगाने का मन हो रहा है
    • अब airlock pressure values के हिसाब से rebase होने वाला token बनाने की बारी है
      इससे Real World Assets(tm) के नाम पर boomers को फँसाया जा सकता है
  • मैं Bluesky पर एक bot को follow करता हूँ जो 50+ points वाले HN posts डालता है, और अचानक एक जाना-पहचाना GitHub link देखकर हैरान रह गया
    करीब 5 दिन पहले मैंने ख़ुद एक Show HN post डाली थी (https://news.ycombinator.com/item?id=42464454), तो सोचा यह अचानक फिर क्यों दिख रही है, फिर पता चला कि वह मेरी post थी ही नहीं
    पिछले लगभग 15 सालों में मैंने जितने open source projects बनाए हैं, उनमें यह सबसे लोकप्रिय project बन गया — इससे सच में बहुत ख़ुशी है
    और “लेकिन यह बनाया क्यों?” के सवाल का ईमानदार जवाब है, “क्योंकि यह मज़ेदार लगा,” और Swift में अपना पहला project बनाने के लिए कुछ सरल ढूँढते हुए iss-mimic देखकर तुरंत लगा कि यही करना है

    • क्या इसमें AI जोड़कर monetize करने का भी कोई plan है?
    • मैंने भी कुछ ऐसा ही किया था, ISS की position का इस्तेमाल करके astronauts पर “सबसे ज़्यादा पेशाब पड़ने वाला देश” निकाला था
      data वाला script शायद कहीं अब भी चल रहा होगा, लेकिन अफ़सोस कि मैं leaderboard website तक नहीं बना पाया
    • क्या इसे library बनाने का इरादा है? लगता है हर Swift app के info panel में यह अहम metric होना चाहिए
    • लगता है मुझे अपने metric को इस data source के साथ जोड़ना चाहिए: https://www.secretbatcave.co.uk/electronics/shart-o-meter/
    • मेरी जानकारी में urine को पानी के रूप में recycle करने के तरीक़े पर काम हो रहा है
      क्या water level भी दिखाया जा सकता है, और यह भी कि दोनों tanks के बीच switching कब होती है?
  • मैं NASA में उस टीम का technical lead और flight controller था जिसने यह telemetry data ISSLive के हिस्से के रूप में public किया था
    यही API ISS Mimic ने इस्तेमाल किया, और तब हम कई सालों तक आम लोगों तक space station program पहुँचाते रहे: https://youtu.be/xAhw_8B25N0?si=OZXH9sZ0bY_iX40V
    12 साल बाद PissStream का आना काफ़ी मज़ेदार है
    अच्छा लग रहा है कि livestream server काम आ रहा है, और सच में वहाँ और भी काफ़ी अच्छी telemetry data मौजूद है
    मुझे ISSMimic पसंद है

    • मुझे अफ़सोस नहीं है, और मैं यह फिर करूँगा
      गंभीरता से कहूँ तो ISS की real-time telemetry का इससे ज़्यादा तुच्छ इस्तेमाल शायद कम ही हुआ होगा, लेकिन यह हैरान करने वाली बात है कि ऐसी बेवकूफ़ी न सिर्फ़ मुमकिन है बल्कि बहुत आसान भी है
      इसे शुरू से संभव बनाने वाले NASA और जुड़े लोगों को सलाम
      ISS Mimic dashboard देखकर फिर से एहसास हुआ कि वहाँ सच में कितनी दिलचस्प telemetry data है
    • सोच रहा हूँ कि जब ISS आख़िरकार retire होकर नष्ट किया जाएगा, तब क्या telemetry stream आख़िर तक चलती रहेगी
      अगर हाँ, तो उस वक़्त terminal के सामने बैठकर station को आख़िरी विदाई का इंतज़ार करना चाहूँगा
    • संगीत से Star Trek Voyager theme याद आती है, और मज़ेदार यह है कि असल में वही संगीत नहीं है
  • मैंने इसे web पर port करके देखा: https://gistpreview.github.io/?76f03f49be58344bfa64c9d5d9f0ec29
    source code यहाँ है: https://gist.github.com/simonw/76f03f49be58344bfa64c9d5d9f0ec29
    पूरे Swift GitHub repository को Gemini 2.0 में paste करके web page में port करने को कहा, तो उसने यह बना दिया: https://gist.github.com/simonw/b4aec4e879e50ac74f6f9cc6e1cdc0a1

    • उसने basic error handling तक जोड़ दी
    • मैंने Claude और ChatGPT-4o से भी ऐसा ही करवाया, और नतीजों में काफ़ी फ़र्क था
      Aider को वही prompt देकर बस इतना जोड़ा कि “Swift code वाली ही API इस्तेमाल करो,” तो वह एक बार में हो गया, लेकिन Claude “web page” जैसा सामान्य निर्देश देकर एक बार में नहीं कर पाया और कुछ और prompts देने पड़े
      ChatGPT-4o ने lightstream.js लोड करने वाला URL hallucinate कर दिया, और आख़िर में मुझे ख़ुद debug करना पड़ा
      इतने छोटे काम में भी prompt के हिसाब से नतीजे इतने बदलते हैं कि यह समझना आसान है कि HN पर हर बार क्यों लोग बँट जाते हैं — कुछ लोगों को LLM coding assistants दूसरे अवतार जैसे लगते हैं, और कुछ को सब पूरा बढ़ा-चढ़ाकर कहा गया लगता है
    • इसे नैतिक रूप से इस्तेमाल करना है तो आभार की attribution भी शामिल होनी चाहिए
    • अगर कोई कहे कि LLM, Stack Overflow से copy-paste करने से बेहतर नहीं है, तो मैं इस web port का उदाहरण दूँगा
  • यह stream processing का अच्छा उदाहरण है

  • मैं ISS Mimic टीम का सदस्य हूँ, और यह मुझे पसंद आया। शानदार काम है
    अगर astronauts की privacy की चिंता है, तो urine tank value crew द्वारा सीधे urine जोड़ने को reflect नहीं करती

    • ISS Mimic के मुक़ाबले “शानदार” शायद थोड़ा बढ़ा-चढ़ाकर कहा गया है, लेकिन तारीफ़ के लिए शुक्रिया
      अब यह जानने की जिज्ञासा हो रही है कि वह value असल में किस चीज़ को reflect करती है
      लगता है मैं अभी UWMS की आत्मा की गहराइयों तक नहीं पहुँचा हूँ
    • तब सच में यह किस चीज़ को reflect करती है, यह जानने की ईमानदार उत्सुकता है
  • variable naming सटीक है
    static let pissYellowLight = Color(red: 0.95, green: 0.85, blue: 0.2)
    static let pissYellowDark = Color(red: 0.7, green: 0.6, blue: 0.1)

    • शुरुआत में मैं menu bar item के background color और foreground color बदलना चाहता था, लेकिन SwiftUI के MenuBarExtra label में कम-से-कम सीधे दिखने वाले तरीक़े से color बदलने का support नहीं दिखा
      label customization छोड़ने के बाद उस unused enum को हटाना स्वाभाविक रूप से भूल गया
  • मैं apolloinrealtime.org बनाने वाला हूँ, और अब ISS program में काम करता हूँ
    सम्मान प्रकट करता हूँ

    • Apollo in Real Time एक जबरदस्त resource है। धन्यवाद
  • मुझे पता ही नहीं था कि यह public information है

    • public funds से चलता है, इसलिए public है
    • हो सकता है एक API ने RTI request की ज़रूरत ही ख़त्म कर दी हो
  • जब भी crew पेशाब करे, तब notification भेजी जा सकती है

    • तब क्या मात्रा के आधार पर यह पहचाना जा सकता है कि कौन-सा astronaut है?
      अगर दूसरे chemical analysis data भी हों, तो शायद मुमकिन हो
      NASA उस analysis data को data hoarders को बेचकर बजट की समस्या सुलझा सकता है, और ISS की हर screen पर ads भी दिखा सकता है
      बल्कि हैरानी इस बात की है कि अब तक किसी YC startup ने ऐसा smart toilet लॉन्च नहीं किया