1 คะแนน โดย GN⁺ 2024-12-25 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • pISSStream เป็นแอปที่แสดงความจุของถังปัสสาวะบนสถานีอวกาศนานาชาติ (ISS) แบบเรียลไทม์ รองรับ macOS เมนูบาร์ รวมถึง iOS, watchOS และ visionOS
  • ข้อมูลรับมาจากสตรีมเทเลเมทรี ISS สาธารณะอย่างเป็นทางการของ NASA ผ่าน Lightstreamer และจะแสดงเปอร์เซ็นต์การเติมล่าสุดของถังเมื่อสถานีภาคพื้นกำลังรับสัญญาณอยู่
  • บน macOS จะแสดง 🧑🏽‍🚀🚽 และเปอร์เซ็นต์การเติมบนแถบเมนู และเมื่อการเชื่อมต่อหรือสัญญาณเทเลเมทรีหลุด จะเปลี่ยนเป็น 🧑🏽‍🚀❗ พร้อมค่าที่รับได้ล่าสุด และสถานะ “Connecting” หรือ “No Signal”
  • iOS และ watchOS ใช้อินเทอร์เฟซแบบเรียบง่ายเพื่อแสดงระดับถังแบบเรียลไทม์ ส่วน visionOS มีการแสดงผลแบบ 3D ด้วย ImmersiveSpace API และเสียงเชิงพื้นที่
  • เนื่องจากเป็นแอป Swift และบนแพลตฟอร์ม Apple ตัวแรก จึงไม่ได้จัดการกับข้อมูลเก่าและการจัดการข้อผิดพลาดอย่างเข้มงวดนัก รับ Pull Request สำหรับแก้บั๊ก แต่ไม่มีแผนจะเพิ่มสถิติอื่นของ ISS

pISSStream ทำอะไร

  • pISSStream เป็นแอปที่แสดงความจุของถังปัสสาวะของ International Space Station แบบเรียลไทม์
  • แพลตฟอร์มที่รองรับคือ macOS, watchOS, iOS, visionOS
  • ความสามารถหลักมีดังนี้
    • ตรวจสอบระดับถังปัสสาวะของ ISS แบบเรียลไทม์
    • ทำงานรวมกับ macOS เมนูบาร์
    • อัปเดตแบบเรียลไทม์ในแอป iOS และ watchOS
    • การแสดงผล 3D แบบดื่มด่ำบน visionOS
    • เสียงเชิงพื้นที่บนหน้าจอแบบดื่มด่ำที่อิงจาก deep-space soundscape
    • UI ที่ปรับปรุงสำหรับ Vision Pro และไอคอนแอปแบบกำหนดเอง
    • ใช้สตรีมเทเลเมทรี ISS สาธารณะอย่างเป็นทางการของ NASA ผ่าน Lightstreamer

ข้อกำหนดสำหรับการติดตั้งและบิลด์

  • สำหรับ macOS สามารถดาวน์โหลด DMG รุ่นล่าสุดได้จากลิงก์ Download
  • iOS, watchOS, visionOS ต้องบิลด์จากซอร์สและเซ็นด้วยบัญชีนักพัฒนาของตนเอง เนื่องจากโมเดลความปลอดภัยของ Apple
  • เงื่อนไขก่อนบิลด์มีดังนี้
    • Xcode 15.2 ขึ้นไป
    • Apple Developer account
    • อุปกรณ์ iOS 17.0 ขึ้นไปสำหรับแอป iOS
    • Apple Vision Pro หรือ visionOS Simulator
  • ขั้นตอนการบิลด์พื้นฐานคือโคลนรีโพซิทอรี จากนั้นเปิด pISSStream.xcodeproj ใน Xcode เลือกทีมพัฒนาใน Signing & Capabilities แล้วบิลด์และรันบนอุปกรณ์เป้าหมาย
  • แม้ไม่มี Apple Developer account ก็ยังรันบนซิมูเลเตอร์หรืออุปกรณ์ได้สูงสุด 7 วันด้วย provisioning profile แบบฟรี

การพัฒนาและแจกจ่ายบน visionOS

  • การพัฒนาบน visionOS ต้องติดตั้ง visionOS SDK ใน Xcode
  • แอปใช้ ImmersiveSpace API สำหรับประสบการณ์การแสดงผล 3D และมีเสียงเชิงพื้นที่เพื่อเพิ่มความสมจริง
  • ข้อกำหนดมีดังนี้
    • Mac ที่ใช้ Apple silicon
    • Xcode 15.2 ขึ้นไป
    • Apple Developer Account
    • Vision Pro ที่เปิดใช้งานโหมดนักพัฒนาแล้ว
    • Mac และ Vision Pro ที่เชื่อมต่ออยู่บนเครือข่าย Wi‑Fi เดียวกัน
  • ขั้นตอนการพัฒนาแบบไร้สายคือ อนุญาต Developer Mode และ Remote Development บน Vision Pro จากนั้นจับคู่ Vision Pro ใน Devices and Simulators ของ Xcode แล้วเลือกเป็นอุปกรณ์เป้าหมายเพื่อรัน
  • ปัญหาที่พบบ่อยมีดังนี้
    • “Device not found”: ต้องตรวจสอบการเชื่อมต่อ Wi‑Fi
    • “Unauthorized device”: ต้องจับคู่ Vision Pro ใหม่
    • “Build failed”: ต้องอัปเดต provisioning profile
    • “No paired Vision Pro found”: ต้องตรวจสอบการเชื่อมต่อและการจับคู่ Vision Pro
    • “Invalid signing”: ต้องตรวจสอบบัญชีนักพัฒนาและ provisioning profile

วิธีใช้งานในแต่ละแพลตฟอร์ม

  • บน macOS เมื่อทั้งการเชื่อมต่อ Lightstreamer และการรับสัญญาณเทเลเมทรี ISS ทำงานปกติ รายการบนแถบเมนูจะแสดง 🧑🏽‍🚀🚽 พร้อมเปอร์เซ็นต์การเติม
  • เมื่อการเชื่อมต่อหรือสัญญาณเทเลเมทรี ISS หลุด รายการบนแถบเมนูจะแสดง 🧑🏽‍🚀❗ พร้อมค่าที่รับได้ล่าสุด และในเมนูจะแสดง “Connecting” หรือ “No Signal”
  • บน iOS เมื่อเปิดแอปจะเห็นระดับถังปัจจุบันผ่านอินเทอร์เฟซแบบเรียบง่าย
  • บน visionOS สามารถดูถังของเสียของ ISS แบบ 3D ที่ดื่มด่ำ และเห็นภาพระดับการเติมแบบเรียลไทม์
  • บน watchOS สามารถติดตามระดับการเติมของถังของเสีย ISS แบบเรียลไทม์ได้จากข้อมือ

แรงจูงใจในการสร้างและข้อจำกัด

  • แรงจูงใจในการสร้างคือความรู้สึกว่า การทำแอปมุกที่อ่านข้อมูลเทเลเมทรีจริงแบบเรียลไทม์จากห้องน้ำของสถานีอวกาศได้ภายในช่วงบ่ายเดียวเป็นเรื่องที่ “ตลกสิ้นดีแต่ก็น่าทึ่งในเวลาเดียวกัน”
  • มันยังเป็นข้ออ้างที่ดีในการเรียน Swift ด้วย แต่แรงจูงใจหลักคือความ ไร้สาระสุดขีด ของตัวแอปเอง
  • ปัญหาที่ทราบมีดังนี้
    • เนื่องจากเป็นแอป Swift และแพลตฟอร์ม Apple ตัวแรก จึงไม่ใช่งานที่เป็นสุดยอดของแนวปฏิบัติการเขียนโค้ดที่ดี
    • อาจพังได้ในแบบคาดไม่ถึงจากทริกเกอร์เล็กน้อย
    • ไม่ได้จัดการกับข้อมูลเก่าอย่างจริงจัง
    • ไม่ได้ใส่ใจกับการจัดการข้อผิดพลาดมากนัก
  • ยินดีรับ Pull Request สำหรับแก้บั๊ก
  • ผู้พัฒนารู้จักสตรีมข้อมูลนี้ผ่าน ISS Mimic และแม้ ISS Mimic จะมีสถิติที่มากกว่าและน่าสนใจกว่าระดับถังปัสสาวะมาก แต่ก็ไม่มีแผนจะเพิ่มเข้าใน pISSStream

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

 
GN⁺ 2024-12-25
ความคิดเห็นจาก Hacker News
  • ได้รู้จักสตรีมข้อมูลจาก https://iss-mimic.github.io/Mimic/ ซึ่งมีสถิติที่น่าสนใจและมากกว่าแค่ถังปัสสาวะเต็มแค่ไหนเยอะมาก
    ประโยคที่ว่า “จะไม่เพิ่มสิ่งเหล่านั้นสักอย่าง” นี่แหละเป็นวิธีสื่อสาร สิ่งที่ไม่ใช่เป้าหมาย ของโปรเจกต์ได้สมบูรณ์แบบ
    น่าเอาเป็นกรณีศึกษาด้านแนวปฏิบัติที่ดีของการสื่อสารในโอเพนซอร์ส

    • จู่ ๆ ก็นึกภาพสถานการณ์ที่การสื่อสารทั้งหมดถูกตัดขาด และเซ็นเซอร์ที่ยังทำงานอยู่มีแค่ เซ็นเซอร์ถังปัสสาวะ
      น่าจะกลายเป็นหนังที่นักบินอวกาศควบคุมปริมาณการเปลี่ยนแปลงของถังเพื่อสื่อสารเป็นรหัสมอร์ส แล้วมีใครสักคนที่เป็น ADHD และติดตั้งแอปเมนูบาร์นี้ไว้สังเกตเห็นสถานการณ์จนช่วยทุกคนได้
    • ไม่ใช่แค่ https://iss-mimic.github.io/Mimic/ เท่านั้น หน้าโปรเจกต์ก็คุ้มค่าที่จะอ่านมาก: https://github.com/ISS-Mimic/Mimic
    • ถ้ามีข้อมูลพวกนี้ทั้งหมด ก็น่าจะช่วยให้ทำ การโจมตีแบบวิศวกรรมสังคม ที่ค่อนข้างสกปรกต่อ ISS และลูกเรือได้
      ปัญหาที่เหลืออยู่ตอนนี้คือจะส่งตัวเองขึ้นไปถึงตรงนั้นได้อย่างไร
    • ไม่น่าไปรู้ข้อมูลอันตรายแบบนี้เลย
      ชักอยากเสียเวลาไปทำ SVG ของ ISS แล้วเอาข้อมูลนี้มาใส่แอนิเมชันด้วย
    • ต่อไปก็ถึงเวลาทำ โทเคน ที่ rebase ตามค่าความดันของแอร์ล็อกแล้ว
      น่าจะใช้ Real World Assets(tm) ล่อคนรุ่นบูมเมอร์ได้
  • ติดตามบอตบน Bluesky ที่โพสต์กระทู้ HN ที่ได้เกิน 50 คะแนนอยู่ แล้วจู่ ๆ ก็เห็นลิงก์ GitHub ที่คุ้นตาเลยตกใจ
    มันเป็นโพสต์ที่ผมเคยลงเองใน Show HN เมื่อประมาณ 5 วันก่อน (https://news.ycombinator.com/item?id=42464454) เลยสงสัยว่าทำไมถึงโผล่มาอีก ที่จริงแล้วไม่ใช่โพสต์ของผม
    ดีใจจริง ๆ ที่ในบรรดาโปรเจกต์โอเพนซอร์สที่ทำมาตลอดราว 15 ปี นี่กลายเป็นโปรเจกต์ที่ได้รับความนิยมที่สุด
    สำหรับคำถามว่า “แล้วทำไปทำไม?” คำตอบที่จริงใจก็คือ “เพราะคิดว่ามันตลกดี” และตอนนั้นกำลังหาอะไรเรียบง่ายสำหรับโปรเจกต์ Swift แรก พอเห็น iss-mimic ก็รู้ทันทีว่าต้องทำอันนี้

    • มีแผนจะใส่ AI เข้าไปแล้วทำเงินจากมันไหม?
    • ผมก็เคยลองทำอะไรคล้าย ๆ กัน ใช้ตำแหน่งของ ISS คำนวณว่า “ประเทศไหนโดนฉี่ใส่มากที่สุด” จากนักบินอวกาศ
      สคริปต์สำหรับข้อมูลน่าจะยังทำงานอยู่ที่ไหนสักแห่ง แต่น่าเสียดายที่ไม่ได้ทำถึงขั้นเป็น เว็บไซต์ตารางจัดอันดับ
    • มีแผนจะทำเป็นไลบรารีไหม? ดูเหมือนว่าแผงข้อมูลของ แอป Swift ทุกตัวจำเป็นต้องมีตัวชี้วัดสำคัญนี้
    • คงต้องรวมตัวชี้วัดกับแหล่งข้อมูลที่ผมทำไว้อันนี้: https://www.secretbatcave.co.uk/electronics/shart-o-meter/
    • เท่าที่รู้กำลังพัฒนาวิธีรีไซเคิลปัสสาวะให้เป็นน้ำอยู่
      แสดง ระดับน้ำ ด้วยได้ไหม และแสดงจังหวะที่สลับระหว่างสองถังได้หรือเปล่า?
  • ผมเคยเป็น หัวหน้าฝ่ายเทคนิคและ flight controller ของทีมที่ NASA ซึ่งเผยแพร่ข้อมูลเทเลเมทรีนี้เป็นส่วนหนึ่งของ ISSLive
    ISS Mimic ใช้ API นี้ และตอนนั้นเราได้เผยแพร่ความรู้เกี่ยวกับโครงการสถานีอวกาศให้สาธารณชนมาหลายปี: https://youtu.be/xAhw_8B25N0?si=OZXH9sZ0bY_iX40V
    ผ่านไป 12 ปีแล้วมี PissStream ออกมา ก็ตลกดีมาก
    ดีใจที่เซิร์ฟเวอร์ไลฟ์สตรีมถูกใช้งานอย่างดี และจริง ๆ แล้วยังมีข้อมูลเทเลเมทรีดี ๆ อีกมาก
    ชอบ ISSMimic

    • ไม่ขอโทษ และจะทำอีก
      ถ้าพูดจริงจัง ตัวอย่างการใช้เทเลเมทรีแบบเรียลไทม์ของ ISS ที่ไร้สาระสุดขีดแบบนี้คงมีไม่มาก แต่ก็น่าทึ่งที่เรื่องโง่ ๆ แบบนี้ไม่เพียงทำได้ แต่ยังทำได้ง่ายมากด้วย
      ขอคารวะ NASA และผู้เกี่ยวข้องที่ทำให้สิ่งนี้เป็นไปได้ตั้งแต่แรก
      พอดูแดชบอร์ด ISS Mimic แล้วก็รู้สึกอีกครั้งว่ามี ข้อมูลเทเลเมทรี ที่น่าสนใจมากจริง ๆ
    • สงสัยว่าตอน ISS สิ้นสุดภารกิจและถูกทำลายในท้ายที่สุด สตรีมเทเลเมทรี จะดำเนินต่อไปจนถึงวินาทีสุดท้ายหรือเปล่า
      ถ้าใช่ พอถึงเวลานั้นคงอยากนั่งรอคำอำลาครั้งสุดท้ายของสถานีอยู่หน้าเทอร์มินัล
    • เพลงทำให้นึกถึงธีม Star Trek Voyager ซึ่งน่าสนใจตรงที่จริง ๆ แล้วไม่ใช่เพลงเดียวกัน
  • ลองพอร์ตอันนี้ไปเป็นเว็บแล้ว: https://gistpreview.github.io/?76f03f49be58344bfa64c9d5d9f0ec29
    ซอร์สโค้ดอยู่ที่นี่: https://gist.github.com/simonw/76f03f49be58344bfa64c9d5d9f0ec29
    ทำโดยวางทั้ง GitHub repository ของ Swift ลงใน Gemini 2.0 แล้วขอให้พอร์ตเป็นเว็บเพจ: https://gist.github.com/simonw/b4aec4e879e50ac74f6f9cc6e1cdc0a1

    • เจ้านั่นใส่ การจัดการข้อผิดพลาด ขั้นพื้นฐานมาให้ด้วย
    • ลองสั่ง Claude กับ ChatGPT-4o ในลักษณะคล้าย ๆ กัน ผลลัพธ์แตกต่างกันค่อนข้างมาก
      พอให้พรอมป์เดียวกันกับ Aider แล้วเพิ่มว่า “ให้ใช้ API เดียวกับโค้ด Swift” ก็สำเร็จในครั้งเดียว แต่ Claude ถ้าบอกแค่ว่า “เว็บเพจ” จะทำครั้งเดียวไม่สำเร็จ ต้องพรอมป์เพิ่มอีกหลายรอบ
      ChatGPT-4o สร้าง URL สำหรับโหลด lightstream.js แบบหลอนขึ้นมา สุดท้ายต้องดีบักเอง
      แม้งานเล็ก ๆ แบบนี้ ผลลัพธ์ก็ยังต่างกันมากตามการเปลี่ยนพรอมป์ เลยเข้าใจได้ง่ายว่าทำไมใน HN ถึงมีทั้งคนที่มองว่า ผู้ช่วยเขียนโค้ด LLM เหมือนการเสด็จมาครั้งที่สอง และคนที่มองว่าทั้งหมดเป็นแค่คำโม้
    • ถ้าจะใช้อย่างมีจริยธรรม ก็ควรใส่ การให้เครดิต เพื่อแสดงความขอบคุณด้วย
    • ถ้ามีใครบอกว่า LLM ไม่ได้ดีกว่าการคัดลอกแปะจาก Stack Overflow ผมคงยก การพอร์ตเป็นเว็บ นี้มาอ้าง
  • เป็นตัวอย่างที่ดีของ การประมวลผลสตรีม

  • ผมเป็นสมาชิกทีม ISS Mimic และชอบสิ่งนี้ งานยอดเยี่ยม
    ถ้ากังวลเรื่องความเป็นส่วนตัวของนักบินอวกาศ ค่าถังปัสสาวะไม่ได้สะท้อนการเติมปัสสาวะโดยตรงจากลูกเรือ

    • เมื่อเทียบกับ ISS Mimic แล้วคำว่า “ยอดเยี่ยม” อาจจะเกินไปหน่อย แต่ขอรับคำชมไว้ด้วยความขอบคุณ
      ผมก็สงสัยเหมือนกันว่าค่านั้นสะท้อนอะไรจริง ๆ
      ดูเหมือนว่ายังไม่ได้มองลึกเข้าไปถึงจิตวิญญาณของ UWMS
    • ถ้าอย่างนั้นจริง ๆ แล้วมันสะท้อนอะไร ผมอยากรู้ด้วยความจริงใจ
  • ชื่อตัวแปรตรงประเด็นมาก
    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 ของ MenuBarExtra ใน SwiftUI ดูเหมือนจะไม่รองรับการเปลี่ยนสี อย่างน้อยก็ไม่ใช่ในวิธีที่มองเห็นได้ทันที
      หลังจากเลิกปรับแต่ง label แล้ว ก็ลืมลบ enum ที่ไม่ได้ใช้ออกไปตามธรรมชาติ
  • ผมเป็นคนทำ apolloinrealtime.org และตอนนี้ทำงานอยู่ใน โปรแกรม ISS
    ขอคารวะ

    • Apollo in Real Time เป็นแหล่งข้อมูลที่ยอดเยี่ยมอย่างท่วมท้น ขอบคุณ
  • ไม่รู้เลยว่านี่เป็นข้อมูลสาธารณะ

    • เพราะดำเนินการด้วยเงินสาธารณะ จึงเปิดเผยต่อสาธารณะ
    • API หนึ่งตัวอาจแทน คำขอเปิดเผยข้อมูลข่าวสาร ได้เลย
  • น่าจะส่งการแจ้งเตือนได้ทุกครั้งที่ลูกเรือปัสสาวะ

    • ถ้าอย่างนั้นระบุได้ไหมว่าเป็นนักบินอวกาศคนไหนจากปริมาณ?
      ถ้ามีข้อมูลวิเคราะห์ทางเคมีอื่น ๆ ด้วยก็อาจเป็นไปได้
      NASA อาจขายข้อมูลวิเคราะห์นั้นให้พวกคลั่งไคล้การเก็บข้อมูลเพื่อแก้ปัญหางบประมาณ แล้วติดโฆษณาบนหน้าจอทุกจอของ ISS ก็ได้
      กลับน่าแปลกใจด้วยซ้ำที่ยังไม่มีสตาร์ทอัพ YC ทำ ส้วมอัจฉริยะ แบบนี้ออกมา