1 puan yazan GN⁺ 2024-12-25 | 1 yorum | WhatsApp'ta paylaş
  • pISSStream, Uluslararası Uzay İstasyonu'nun (ISS) idrar tankı kapasitesini gerçek zamanlı gösteren bir uygulamadır; macOS menü çubuğunu ve iOS, watchOS, visionOS platformlarını destekler
  • Veriler, NASA'nın resmî herkese açık ISS telemetri akışından Lightstreamer aracılığıyla alınır ve yer istasyonu sinyali alırken en güncel tank doluluk oranını gösterir
  • macOS'ta menü çubuğunda 🧑🏽‍🚀🚽 ve doluluk oranı gösterilir; bağlantı veya telemetri sinyali kesilirse 🧑🏽‍🚀❗, son alınan değer ve “Connecting” ya da “No Signal” durumu gösterilir
  • iOS ve watchOS, gerçek zamanlı tank seviyesini basit bir arayüzle gösterir; visionOS ise ImmersiveSpace API tabanlı 3D görselleştirme ve uzamsal ses sunar
  • İlk Swift ve Apple platformu uygulaması olduğu için eski veri işleme ve hata yönetimi konusunda çok proaktif değildir; hata düzeltme için Pull Request kabul edilir ancak başka ISS istatistikleri ekleme planı yoktur

pISSStream ne yapar

  • pISSStream, International Space Station'ın idrar tankı kapasitesini gerçek zamanlı gösteren bir uygulamadır
  • Desteklenen platformlar macOS, watchOS, iOS, visionOS'tur
  • Başlıca özellikler şunlardır
    • ISS idrar tankı seviyesinin gerçek zamanlı izlenmesi
    • macOS menü çubuğu entegrasyonu
    • iOS ve watchOS uygulamalarında gerçek zamanlı güncellemeler
    • visionOS'ta sürükleyici 3D görselleştirme
    • Sürükleyici ekranda deep-space soundscape tabanlı uzamsal ses
    • Vision Pro için geliştirilmiş arayüz ve özel uygulama simgesi
    • NASA'nın resmî herkese açık ISS telemetri akışının Lightstreamer üzerinden kullanılması

Kurulum ve derleme gereksinimleri

  • macOS için en son DMG sürümü Download bağlantısından indirilebilir
  • iOS, watchOS, visionOS için Apple'ın güvenlik modeli nedeniyle kaynak koddan derleme yapılmalı ve kendi geliştirici hesabınızla imzalanmalıdır
  • Derleme ön koşulları şunlardır
    • Xcode 15.2 veya üzeri
    • Apple Developer account
    • iOS uygulaması için iOS 17.0 veya üzeri yüklü bir cihaz
    • Apple Vision Pro veya visionOS simülatörü
  • Temel derleme süreci, depoyu klonladıktan sonra pISSStream.xcodeproj dosyasını Xcode'da açmak, Signing & Capabilities bölümünde geliştirme ekibini seçmek ve ardından hedef cihazda derleyip çalıştırmaktır
  • Apple Developer account olmasa bile ücretsiz provisioning profile ile simülatörde veya cihazda en fazla 7 gün çalıştırılabilir

visionOS geliştirme ve dağıtım

  • visionOS geliştirme için Xcode'da visionOS SDK kurulu olmalıdır
  • Uygulama, 3D görselleştirme deneyimi için ImmersiveSpace API kullanır ve sürükleyiciliği artırmak için uzamsal ses içerir
  • Gereksinimler şunlardır
    • Apple silicon Mac
    • Xcode 15.2 veya üzeri
    • Apple Developer Account
    • Geliştirici modu etkinleştirilmiş Vision Pro
    • Aynı Wi-Fi ağına bağlı bir Mac ve Vision Pro
  • Kablosuz geliştirme süreci, Vision Pro'da Developer Mode ve Remote Development'ı etkinleştirdikten sonra Xcode'un Devices and Simulators bölümünde Vision Pro'yu eşleştirip derleme hedefi olarak seçerek çalıştırma şeklindedir
  • Yaygın sorunlar şunlardır
    • “Device not found”: Wi-Fi bağlantısı kontrol edilmelidir
    • “Unauthorized device”: Vision Pro yeniden eşleştirilmelidir
    • “Build failed”: provisioning profile güncellenmelidir
    • “No paired Vision Pro found”: Vision Pro bağlantısı ve eşleştirmesi kontrol edilmelidir
    • “Invalid signing”: geliştirici hesabı ve provisioning profile kontrol edilmelidir

Platforma göre kullanım

  • macOS'ta hem Lightstreamer bağlantısı hem de ISS telemetri sinyali alımı normalse menü çubuğu öğesinde 🧑🏽‍🚀🚽 ve doluluk oranı gösterilir
  • Bağlantı veya ISS telemetri sinyali kesilirse menü çubuğu öğesinde 🧑🏽‍🚀❗ ve son alınan değer gösterilir, menüde ise “Connecting” veya “No Signal” görünür
  • iOS'ta uygulama açıldığında mevcut tank seviyesi basit bir arayüzle görülebilir
  • visionOS'ta ISS atık tankı sürükleyici 3D ortamda görüntülenir ve gerçek zamanlı doluluk seviyesi görselleştirilir
  • watchOS'ta ISS atık tankının doluluk seviyesi bilekten gerçek zamanlı izlenir

Yapım motivasyonu ve sınırlamalar

  • Uygulamanın yapılma motivasyonu, uzay istasyonunun tuvaletinden gelen gerçek zamanlı telemetri verilerini okuyan şaka bir uygulamanın bir öğleden sonra yapılabilmesinin “saçma ama aynı zamanda hayranlık uyandırıcı” olmasıdır
  • Swift öğrenmek için iyi bir bahane olması da etkiliydi, ancak asıl motivasyon uygulamanın absürtlüğü idi
  • Bilinen sorunlar şunlardır
    • İlk Swift ve Apple platformu uygulaması olduğu için iyi kodlama pratiklerinin zirvesi değildir
    • Küçük tetikleyicilerle bile beklenmedik şekillerde bozulabilir
    • Eski veriler konusunda proaktif davranmaz
    • Hata yönetimine çok önem verilmemiştir
  • Hata düzeltmeye yönelik Pull Request'ler memnuniyetle karşılanır
  • Veri akışı ISS Mimic üzerinden keşfedildi; ISS Mimic'te idrar tankı seviyesinden çok daha fazla ve ilginç istatistikler vardır, ancak bunların pISSStream'e eklenmesi planlanmamaktadır

1 yorum

 
GN⁺ 2024-12-25
Hacker News yorumları
  • Veri akışını https://iss-mimic.github.io/Mimic/ üzerinden öğrendim; idrar tankının ne kadar dolu olduğundan çok daha fazla ve ilginç istatistik var
    “Bunların hiçbirini eklemeyeceğim” cümlesi, projenin hedef dışı kapsamını aktarmanın mükemmel bir yolu
    Açık kaynak iletişimi için iyi bir uygulama örneği olarak öğrenilmeye değer

    • Nedense tüm iletişimin koptuğu ve çalışan tek sensörün idrar tankı sensörü olduğu bir durum aklıma geliyor
      Astronotların tanktaki değişim miktarını kontrol ederek Mors koduyla iletişim kurduğu; ADHD’si olan ve bu menü çubuğu uygulamasını kurmuş birinin durumu fark edip herkesi kurtardığı bir film olurdu
    • Sadece https://iss-mimic.github.io/Mimic/ değil, proje sayfası da kesinlikle okunmaya değer: https://github.com/ISS-Mimic/Mimic
    • Tüm o veriyle ISS ve mürettebata karşı epey kirli bir sosyal mühendislik saldırısı düzenlemeye yardımcı olunabilir gibi
      Geriye kalan tek sorun, bedeni oraya kadar nasıl çıkaracağımız
    • Bu tehlikeli bilgiyi öğrenmemem gerekirdi
      ISS’in SVG’sini yapıp bu verilerle animasyonlandırmaya fazla zaman harcamak istiyorum
    • Şimdi sıra, airlock basınç değerine göre rebase edilen bir token yapmaya geldi
      Real World Assets(tm) ile boomer kuşağını kandırabiliriz
  • Bluesky’de 50 puanı aşan HN gönderilerini paylaşan bir botu takip ediyorum; tanıdık bir GitHub bağlantısı birden karşıma çıkınca şaşırdım
    Yaklaşık 5 gün önce bizzat Show HN olarak paylaştığım gönderi (https://news.ycombinator.com/item?id=42464454) olduğu için neden şimdi göründüğünü merak ettim, meğer aslında benim gönderim değilmiş
    Son 15 yıl kadar içinde yaptığım açık kaynak projeler arasında bunun en popüler proje olmasına gerçekten sevindim
    “Peki neden yaptın?” sorusuna dürüst cevabım “komik olduğunu düşündüğüm için”; Swift’te ilk projem olarak basit bir şey ararken iss-mimic’i gördüm ve hemen bunu yapmam gerektiğini hissettim

    • Buna yapay zeka ekleyip para kazanma planın da var mı?
    • Ben de benzer bir şey denemiştim; ISS’in konumunu kullanarak astronotların “en çok üzerine işediği ülkeyi” hesaplamıştım
      Veri için çalışan bir betik bir yerlerde duruyor olmalı, ama ne yazık ki sıralama tablosu web sitesini yapmaya kadar gelemedim
    • Bunu bir kütüphane yapmayı düşünür müsün? Tüm Swift uygulamalarının bilgi panelinde bu önemli metriğe ihtiyaç var gibi görünüyor
    • Sanırım yaptığım şu metrikle veri kaynağını birleştirmeliyiz: https://www.secretbatcave.co.uk/electronics/shart-o-meter/
    • İdrarı suya geri dönüştürmenin bir yöntemini geliştirdiklerini biliyorum
      Su seviyesini de gösterip iki tank arasında geçişin olduğu anı gösterebilir misin?
  • NASA’da bu telemetri verilerini ISSLive’ın bir parçası olarak herkese açan ekibin teknik lideri ve uçuş kontrolörüydüm
    Bu API’yi ISS Mimic kullandı ve o dönem biz de yıllarca uzay istasyonu programını halka tanıttık: https://youtu.be/xAhw_8B25N0?si=OZXH9sZ0bY_iX40V
    12 yıl sonra PissStream’in çıkması epey komik
    Livestream sunucusunun iyi kullanılıyor olmasına sevindim; aslında başka birçok iyi telemetri verisi de var
    ISSMimic’i seviyorum

    • Üzgün değilim, yine yaparım
      Ciddi konuşmak gerekirse, ISS’in gerçek zamanlı telemetrisinin bu kadar aşırı önemsiz bir kullanım örneği az bulunur; ama böyle aptalca bir şeyin yalnızca mümkün olmakla kalmayıp çok kolay olması şaşırtıcı
      Bunu en başından mümkün kılan NASA’ya ve ilgili herkese saygılar
      ISS Mimic panosuna bakınca gerçekten çok fazla ilginç telemetri verisi olduğunu da yeniden fark ettim
    • ISS nihai olarak hizmetten çıkarılıp yok edilirken telemetri akışının son ana kadar sürüp sürmeyeceğini merak ediyorum
      Eğer öyleyse o an geldiğinde terminalin başında istasyonun son vedasını beklemek isterim
    • Müzik Star Trek Voyager temasını hatırlatıyor; aslında aynı müzik olmaması ilginç
  • Bunu web’e portlamayı denedim: https://gistpreview.github.io/?76f03f49be58344bfa64c9d5d9f0ec29
    Kaynak kodu burada: https://gist.github.com/simonw/76f03f49be58344bfa64c9d5d9f0ec29
    Swift GitHub deposunun tamamını Gemini 2.0’a yapıştırıp web sayfasına portlamasını isteyerek yaptım: https://gist.github.com/simonw/b4aec4e879e50ac74f6f9cc6e1cdc0a1

    • Temel hata işlemeyi bile eklemiş
    • Claude ve ChatGPT-4o’ya da benzer şekilde denettim, sonuçlar epey değişkendi
      Aider’a aynı prompt’u verip “Swift koduyla aynı API’yi kullan” diye ekleyince tek seferde oldu; ama Claude’a sadece “web sayfası” deyince tek seferde yapamadı ve birkaç ek prompt gerekti
      ChatGPT-4o lightstream.js’i yükleyeceği URL’yi halüsinasyonla uydurdu ve sonunda kendim debug etmek zorunda kaldım
      Bu kadar küçük bir işte bile prompt değişikliklerine göre sonuçlar bu kadar değişiyorsa, HN’de LLM kodlama yardımcılarını ikinci geliş gibi görenlerle bunların tamamen palavra olduğunu düşünenlerin neden her seferinde ayrıştığını anlamak kolaylaşıyor
    • Etik kullanmak için teşekkür amaçlı kaynak gösterimi de eklenmeli
    • Biri LLM’lerin Stack Overflow’dan kopyala-yapıştırdan daha iyi olmadığını söylerse bu web portunu örnek göstereceğim
  • Akış işleme için iyi bir örnek

  • ISS Mimic ekibindenim; beğendim. Harika iş
    Astronot mahremiyeti konusunda endişeleniyorsanız, idrar tankı değerleri mürettebatın doğrudan idrar eklemesini yansıtmaz

    • ISS Mimic’le kıyaslayınca “harika” biraz abartı olabilir ama övgüyü memnuniyetle kabul ederim
      O değerin aslında neyi yansıttığını da merak ediyorum
      Görünüşe göre UWMS’nin ruhunun derinliklerine henüz bakmamışım
    • O zaman gerçekten neyi yansıttığını içtenlikle merak ediyorum
  • Değişken adları tam isabet
    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)

    • Aslında menü çubuğu öğesinin arka plan ve ön plan rengini değiştirmeye çalışmıştım; SwiftUI’nin MenuBarExtra etiketi, en azından doğrudan görünen biçimde, renk değiştirmeyi desteklemiyor gibiydi
      Etiketi özelleştirmekten vazgeçtikten sonra kullanılmayan enum’u silmeyi doğal olarak unuttum
  • apolloinrealtime.org’u yapan kişiyim ve şu anda ISS programında çalışıyorum
    Saygılar

    • Apollo in Real Time olağanüstü iyi bir kaynak. Teşekkürler
  • Bunun kamuya açık bilgi olduğunu bilmiyordum

    • Kamu kaynaklarıyla işletildiği için açık
    • Bir API, bilgi edinme başvurusunun yerini almış olabilir
  • Mürettebat her idrar yaptığında bildirim gönderebilir

    • O zaman miktardan hangi astronot olduğunu tespit etmek mümkün olmaz mı?
      Başka kimyasal analiz verileri de varsa mümkün olabilir
      NASA bu analiz verilerini veri bağımlılarına satarak bütçe sorununu çözebilir, ISS’teki tüm ekranlarda da reklam gösterebilir
      Aslında bir YC startup’ının hâlâ böyle bir akıllı klozet çıkarmamış olması şaşırtıcı