रीयल-टाइम ISS यूरिन टैंक स्टेटस दिखाने वाला macOS menu bar ऐप
(github.com/Jaennaet)- 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 टिप्पणियां
Hacker News टिप्पणियाँ
मुझे https://iss-mimic.github.io/Mimic/ पर यह data stream मिला, और इसमें सिर्फ़ urine tank कितना भरा है उससे कहीं ज़्यादा और दिलचस्प stats हैं
“मैं इनमें से कुछ भी नहीं जोड़ूँगा” वाली पंक्ति ही प्रोजेक्ट के non-goals बताने का एकदम परफेक्ट तरीका है
open source communication की best practice के रूप में इससे सीखा जा सकता है
astronauts tank के बदलाव की दर को Morse code में बदलकर संदेश भेजते हैं, और किसी ADHD वाले इंसान ने यह menu bar app इंस्टॉल किया हुआ है, वह बात समझकर सबको बचा लेता है — ऐसा कोई फ़िल्मी प्लॉट लग रहा है
अब बस यह समस्या बचती है कि ख़ुद को वहाँ तक कैसे भेजा जाए
अब ISS का SVG बनाकर इस data से उसे animate करने में बहुत ज़्यादा समय लगाने का मन हो रहा है
इससे 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 देखकर तुरंत लगा कि यही करना है
data वाला script शायद कहीं अब भी चल रहा होगा, लेकिन अफ़सोस कि मैं leaderboard website तक नहीं बना पाया
क्या 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 है
अगर हाँ, तो उस वक़्त terminal के सामने बैठकर station को आख़िरी विदाई का इंतज़ार करना चाहूँगा
मैंने इसे 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
Aider को वही prompt देकर बस इतना जोड़ा कि “Swift code वाली ही API इस्तेमाल करो,” तो वह एक बार में हो गया, लेकिन Claude “web page” जैसा सामान्य निर्देश देकर एक बार में नहीं कर पाया और कुछ और prompts देने पड़े
ChatGPT-4o ने lightstream.js लोड करने वाला URL hallucinate कर दिया, और आख़िर में मुझे ख़ुद debug करना पड़ा
इतने छोटे काम में भी prompt के हिसाब से नतीजे इतने बदलते हैं कि यह समझना आसान है कि HN पर हर बार क्यों लोग बँट जाते हैं — कुछ लोगों को LLM coding assistants दूसरे अवतार जैसे लगते हैं, और कुछ को सब पूरा बढ़ा-चढ़ाकर कहा गया लगता है
यह stream processing का अच्छा उदाहरण है
मैं ISS Mimic टीम का सदस्य हूँ, और यह मुझे पसंद आया। शानदार काम है
अगर astronauts की privacy की चिंता है, तो urine tank value crew द्वारा सीधे urine जोड़ने को reflect नहीं करती
अब यह जानने की जिज्ञासा हो रही है कि वह value असल में किस चीज़ को reflect करती है
लगता है मैं अभी UWMS की आत्मा की गहराइयों तक नहीं पहुँचा हूँ
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)label customization छोड़ने के बाद उस unused enum को हटाना स्वाभाविक रूप से भूल गया
मैं apolloinrealtime.org बनाने वाला हूँ, और अब ISS program में काम करता हूँ
सम्मान प्रकट करता हूँ
मुझे पता ही नहीं था कि यह public information है
जब भी crew पेशाब करे, तब notification भेजी जा सकती है
अगर दूसरे chemical analysis data भी हों, तो शायद मुमकिन हो
NASA उस analysis data को data hoarders को बेचकर बजट की समस्या सुलझा सकता है, और ISS की हर screen पर ads भी दिखा सकता है
बल्कि हैरानी इस बात की है कि अब तक किसी YC startup ने ऐसा smart toilet लॉन्च नहीं किया