You are browsing as a guest. Sign up (or log in) to start making projects!

Open comments for this post

1h 5m 8s logged

Building a reliable ISS pass predictor has been a lesson in balancing ambition and my own consistent ability to break perfectly good code. I started by moving my entire development workflow to GitHub Codespaces, which has been a lifesaver; it provides a clean, cloud-based environment that keeps my local machine safe from the digital clutter and potential malware risks I encountered during my previous projects. Seriously, I’m pretty sure my machine still has the digital equivalent of an STD from that dock project I made a while ago. I tackled the core prediction engine using the Skyfield and Requests libraries, which allow me to pull live Two-Line Element (TLE) data directly from CelesTrak (which is a website that basically contains all the TLE for almost every satellite), ensuring that every calculation is based on the most recent orbital telemetry. The most significant hurdle I faced was refining the state machine logic within my prediction loop. Without a proper tracker, my initial script would suffer from an existential crisis, mistakenly logging “Set” events before “Rise” events or failing to account for passes that were already in progress when the script began (Please dont judge me, I’m a beginner and tho I have completed half of CS50, it has been a while since I have coded anything…). I solved this by implementing a persistent tracking dictionary that survives outside the loop iterations, allowing the program to safely identify and group the three distinct phases of an ISS pass: the Rise, the Peak, and the Set. Along the way, I navigated some predictable debugging hurdles, such as TypeErrors caused by me trying to force-format a Skyfield Time object as a simple float—which is a fantastic way to make your terminal scream at you—before I finally realized I needed to use proper UTC string formatting. The project is now at a point where it successfully processes raw orbital geometry for my specific coordinates in Greater Noida and exports clean, actionable data. With the backend logic stabilized, my next steps involve refactoring the code into a modular utility for my Flask API and building. Once my exams are finished, I intend to dedicate full-time focus to this project and my upcoming plans for a personal homelab setup, provided I don’t accidentally join a botnet in the meantime.

0
1

Comments 0

No comments yet. Be the first!