Changelog
- Updated program to include, and handle both satellite and debris Cache Data from Celestrak (1665273)
Basically, Now I have 2 files of both Debris data and Satellite Data
Basically, Now I have 2 files of both Debris data and Satellite Data
Basically, Now I have 2 files of both Debris data and Satellite Data
Okay, so remember in my last Devlog, i noted that Celestrak didn’t like me pinging their servers more than once every 2 hours, which crashes my RUST backend. So today i implemented Caching. Basically, How this works is, I check if there is a file named “active_satellites.txt”, if there is not, i go ahead and create one, and add all the satellite TLE data from Celestrak here. If there already was one, I check the MetaData for time modified, and if this is more than 2 hours, I ping Celestrak again, and Update the File with new data. If it is less than 2 hours tho, i go ahead and use the one i already HAD.
Okay, so remember in my last Devlog, i noted that Celestrak didn’t like me pinging their servers more than once every 2 hours, which crashes my RUST backend. So today i implemented Caching. Basically, How this works is, I check if there is a file named “active_satellites.txt”, if there is not, i go ahead and create one, and add all the satellite TLE data from Celestrak here. If there already was one, I check the MetaData for time modified, and if this is more than 2 hours, I ping Celestrak again, and Update the File with new data. If it is less than 2 hours tho, i go ahead and use the one i already HAD.
Okay, so i HAVE been able to Change from Static data to live data using Celestrak Starlink APIs. Doing this inSo many problems like Chunking, Parsing, RUST async/await, and doing all of that over 500 3d models without frying my CPU.
Now, even tho i have been able to get it actually showing up, I need to deal with Celestrak Rate limiting, and Separating Debris from Satellites(Currently, One of the satellite is chosen to be the Satellite, and the rest are set to debris lol). I’ll fix all of this Tomorrow, FOR NOW I HAVE TO SLEEP(My girlfriend got Mad i was not sleeping enough lol 😭😂). Also fixing Scaling, as these should NOT be this big compared to the earth lol.
Okay, so i HAVE been able to Change from Static data to live data using Celestrak Starlink APIs. Doing this inSo many problems like Chunking, Parsing, RUST async/await, and doing all of that over 500 3d models without frying my CPU.
Now, even tho i have been able to get it actually showing up, I need to deal with Celestrak Rate limiting, and Separating Debris from Satellites(Currently, One of the satellite is chosen to be the Satellite, and the rest are set to debris lol). I’ll fix all of this Tomorrow, FOR NOW I HAVE TO SLEEP(My girlfriend got Mad i was not sleeping enough lol 😭😂). Also fixing Scaling, as these should NOT be this big compared to the earth lol.
Okay, Massive W on this devlog. So I made collision detection show up on the frontend rather than just the Backend by enhancing my RUST functions to return a True or False value when collision is detected. I had some problems with that, cause RUST doesn’t do global variables, and trying to pass a variable from one function(The collision detector) To another(The trajectory calculation), to add a value to my struct was quite literally impossible. I had to delete one of my threads, and change my architecture from branching to linear.
Oh, and I also changed the number of debris from 10 to 100, and the collision distance from 100km to 1000km to ensure collision will be detected lol.
Okay, Massive W on this devlog. So I made collision detection show up on the frontend rather than just the Backend by enhancing my RUST functions to return a True or False value when collision is detected. I had some problems with that, cause RUST doesn’t do global variables, and trying to pass a variable from one function(The collision detector) To another(The trajectory calculation), to add a value to my struct was quite literally impossible. I had to delete one of my threads, and change my architecture from branching to linear.
Oh, and I also changed the number of debris from 10 to 100, and the collision distance from 100km to 1000km to ensure collision will be detected lol.
Yay 🥳🎉. Finally have the debris models showing up. They’re really small tho, so can’t really be seennn. Lemme make them a bit bigger
Done.
Yay 🥳🎉. Finally have the debris models showing up. They’re really small tho, so can’t really be seennn. Lemme make them a bit bigger
Done.
Today, I started building Penny Bloom, a savings platform I want to make more engaging and useful than a traditional savings app. I started by setting up the basic HTML structure for the dashboard, then created the main header with a greeting, notification btn and user avatar badge then I also added a sidebar with navigation for Dashboard, Goals, Calendar, Transactions, Analytics, Rewards, Shop and Settings. I also connected my CSS and JavaScript files which I later used to style and add functionality for opening and closing the sidebar. The main structure and basic navigation are now in place(I might change some stuff later tho cause I’m not satisfied with the look now). Next, I’ll focus on adding more features to the dashboard and making the site look and feel more like a complete product.
Sighs. I promise this is not all i did for nearly 2 hours 😭🤧.
I have been really battling with trying to render 3d Model Asteroids instead of red Meshes, and am having problems with Only accepting one unique item(Which means i’d have to load 10 different 4mb debris file 62 times every second PURELY ON THE FRONTEND, which would surely crash any browser in any computer lol. Severely Un-Optimised).
Currently doing research On how to Handle that, Don’t wanna use gemini too much.
Sadly, HackClub does not record time spent on research 😭
Sighs. I promise this is not all i did for nearly 2 hours 😭🤧.
I have been really battling with trying to render 3d Model Asteroids instead of red Meshes, and am having problems with Only accepting one unique item(Which means i’d have to load 10 different 4mb debris file 62 times every second PURELY ON THE FRONTEND, which would surely crash any browser in any computer lol. Severely Un-Optimised).
Currently doing research On how to Handle that, Don’t wanna use gemini too much.
Sadly, HackClub does not record time spent on research 😭
Basically, i have been working with generating debris coordinates, and Mesh visualizations for said Debris.
Basically, i have been working with generating debris coordinates, and Mesh visualizations for said Debris.
Basically, I Ditched the Nonsense Sphere Meshes, and added actual 3d models of the Earth and the ISS.
I encountered several issues, Like scaling, and stuff. Had to make sure The ISS could be seen, While not being big enough to be a bother to the Earth. Ended up adding a glow to the satellite.
Add 3D models for Earth and ISS with scaling logic
Basically, I Ditched the Nonsense Sphere Meshes, and added actual 3d models of the Earth and the ISS.
I encountered several issues, Like scaling, and stuff. Had to make sure The ISS could be seen, While not being big enough to be a bother to the Earth. Ended up adding a glow to the satellite.
Add 3D models for Earth and ISS with scaling logic
Basically Made the Predicted Coordinates of the ISS change based on the amount of time that has passed(Simulates 90 minutes in 60 seconds).
Okay, so I Hardcoded Debris Coordinates, and Compared it’s Predicted Coordinates to the Predicted Coordinates of My Sattelite. Cna now Predict Collision Chances, and Warn if They get too close.
Also went on a Looking Spree, to Download 3d Models of Sattelites, Space Junk, and the Earth, To use in my Frontend, and Look at other Sites that do what I am aiming at like https://keeptrack.space, and https://cp4.rkas.net/?intldes=2007-012Q(Stuffin Space).
Okay, So…… I wanted a way to show my Output Outside if the terminal, and I chose to use a web browser, since I am already quite skilled in frontend web dev. Had to add 2 New crates. Tokio for Async/Await functions, and Axum for Web socket Functions. Had some fun reading through their documentations and Implementing Tokio’s Broadcast instead of mpsc ones.
The reason i needed to change my broadcast method is cause mpsc is Single Consumer/Client, But multiple people might want to View the website at the same time