Gerçek zamanlı ISS idrar tankı durumunu gösteren macOS menü çubuğu uygulaması
(github.com/Jaennaet)- 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.xcodeprojdosyası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
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
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
Geriye kalan tek sorun, bedeni oraya kadar nasıl çıkaracağımız
ISS’in SVG’sini yapıp bu verilerle animasyonlandırmaya fazla zaman harcamak istiyorum
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
Veri için çalışan bir betik bir yerlerde duruyor olmalı, ama ne yazık ki sıralama tablosu web sitesini yapmaya kadar gelemedim
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
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
Eğer öyleyse o an geldiğinde terminalin başında istasyonun son vedasını beklemek isterim
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
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
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
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
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)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
Bunun kamuya açık bilgi olduğunu bilmiyordum
Mürettebat her idrar yaptığında bildirim gönderebilir
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ı