<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Justin</title>
    <description>The latest articles on DEV Community by Justin (@street-air-5461).</description>
    <link>https://dev.to/street-air-5461</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3446461%2Fa18599dd-770d-4411-accc-b9a57fc81313.png</url>
      <title>DEV Community: Justin</title>
      <link>https://dev.to/street-air-5461</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/street-air-5461"/>
    <language>en</language>
    <item>
      <title>The tyranny of google page speed insights</title>
      <dc:creator>Justin</dc:creator>
      <pubDate>Tue, 02 Sep 2025 00:54:22 +0000</pubDate>
      <link>https://dev.to/street-air-5461/the-tyranny-of-google-page-speed-insights-54b</link>
      <guid>https://dev.to/street-air-5461/the-tyranny-of-google-page-speed-insights-54b</guid>
      <description>&lt;p&gt;"All good but why is the page speed insights score so low?"&lt;/p&gt;

&lt;p&gt;The phrase that web developers just hate to hear.&lt;/p&gt;

&lt;p&gt;The last week I have spent trying to find a balance between having a SPA (Single Page Application) that loads once and then can be used, with one that is also SEO and crawler friendly, has deep links, and also has good page speed insight scores.&lt;/p&gt;

&lt;p&gt;Over a very short period I have had a fast re-introduction to the whole battleground of &lt;strong&gt;SEO vs Speed vs Functionality&lt;/strong&gt; (it sounds like a pick two scenario).&lt;/p&gt;

&lt;h2&gt;
  
  
  History lesson
&lt;/h2&gt;

&lt;p&gt;In the good old days of web development, php and modperl or static files we would shoot the web page from the server to the browser. Life was full of tables, and good. Sort of.&lt;/p&gt;

&lt;p&gt;Then along came &lt;em&gt;web development frameworks&lt;/em&gt; like React and about three dozen competitors. Suddenly it was all about &lt;em&gt;hydration&lt;/em&gt; and &lt;em&gt;shadow Dom&lt;/em&gt; and re-usable components. Recognisable html barely arrived at the browser any more. Instead whole chunks of JS arrived along with the "Flashes of Unstyled Content" (FOUC), and many other headaches.&lt;/p&gt;

&lt;p&gt;But it also became about web crawlers failing to crawl your extremely js-heavy content. And it became about poor page speed ("lighthouse") scores too.&lt;/p&gt;

&lt;p&gt;For a while google promoted a solution: &lt;em&gt;renderbot&lt;/em&gt;! this product (basically chrome in a box) would sit on your server and render the complex pages, then deliver the final-final-really-final html to the dumb crawlers. This sounded good in practice if it could be just plugged in, but the devil was in the details. &lt;strong&gt;Now renderbot is render-not&lt;/strong&gt;: deprecated by google and closed to new GitHub issues.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solutions
&lt;/h2&gt;

&lt;p&gt;A tempting solution is to just give up and build a &lt;em&gt;static tree&lt;/em&gt; of URLs (html files) that can be crawled by all the spiders. Unsatisfying but still a solution many sites use because what else can they really do when crawlers are overloaded by the heavy task of piecing together a web page that displays a few H1 and H3 tags and a paragraph of keywords and about a million javascript instructions to get there?&lt;/p&gt;

&lt;p&gt;Enter: &lt;em&gt;server side rendering&lt;/em&gt;. Everything old is new again. Web-dev is back to building html complete web pages on the server and shipping them to the client where the glamorous parts start operating with sprinkles of late booted javascript.&lt;/p&gt;

&lt;p&gt;But if you're NOT already invested in your &lt;em&gt;main event&lt;/em&gt; being React, or Svelte5, or Vue, or NextJS or new sexy platform, then some kind of "enable SSR" (not that this is ever as easy as it sounds, anyway) switch is just not an option. What to do?&lt;/p&gt;

&lt;h2&gt;
  
  
  What I did
&lt;/h2&gt;

&lt;p&gt;In the case of satellitemap.space the issue I faced is a satellite information website and tool needs an array of search engine friendly URLs that lead directly to satellites! and constellations! it is, after all, how many people might start with trying to get information. "where is the ISS?" "Where did that starlink satellite re-enter?"&lt;/p&gt;

&lt;p&gt;I did have deep-links to satellites. But there was a problem. Page speed insights refused to believe the site was interactive until all the network traffic settled down. So it would give good usable URLs that opened the SPA in a certain mode, a failing grade. A deep link to the ISS would be interactive on my phone in a few seconds but google would score the URL as being a failure.&lt;/p&gt;

&lt;p&gt;Worse, SEO-rich info related to a SPA deep-link should be mostly concentrated in the "HEAD" section of the page: the page TITLE, the meta tags, and so on. These parts appear first in the index.html that delivers the SPA, and while they can be re-written later, when the deep-link is inspected, dumb crawlers might fail to wait for that.&lt;/p&gt;

&lt;p&gt;Enter &lt;a href="https://astro.build" rel="noopener noreferrer"&gt;Astro&lt;/a&gt;. Astro allowed me to build a page from any URL pattern, server-side, include complex js driven divs, but have a 90+ lighthouse score. I can still use tailwindcss. I can still can use any js modules or functions that the home page SPA already uses. So it was familiar. It did not require a re-think or much duplication of effort.&lt;/p&gt;

&lt;p&gt;As a result of astro I can now add an entire satellite catalog over URLs like: &lt;a href="https://satellitemap.space/sat/:norad_id" rel="noopener noreferrer"&gt;https://satellitemap.space/sat/:norad_id&lt;/a&gt; with SEO rich headers and content, but it also loads blindingly fast from the perspective of google lighthouse:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fos1h3l7qv81zq53vi4py.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fos1h3l7qv81zq53vi4py.png" alt=" " width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apart from being able to do API requests before emitting even a header line back to the browser, Astro also enables the trick of &lt;em&gt;only hydrating the sections of page when they are visible, or first interacted with&lt;/em&gt;. In the case of the above-mentioned single satellite catalog page these were:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Search function&lt;/li&gt;
&lt;li&gt;The full monty webgl globe visuals plugin&lt;/li&gt;
&lt;li&gt;The satellite description accordions&lt;/li&gt;
&lt;li&gt;The Sky transit table&lt;/li&gt;
&lt;li&gt;(and any others I want to add)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So now the complete pageload before any attempt to use search or scroll down to the globe plugin looks like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faewffin0tvlbh5og4suu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faewffin0tvlbh5og4suu.png" alt=" " width="800" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;that's it. vs any other typical modern website page, this is a lean. A web page with ozempic face.&lt;/p&gt;

&lt;p&gt;Scrolling down the page causes the entire globe visualisation to boot up. (And that process was already a lot leaner than the Caesium globe library). So visually it only takes a second or two.&lt;/p&gt;

&lt;p&gt;Pressing the Search icon causes the incremental search process to boot up.&lt;/p&gt;

&lt;p&gt;None of these late hydrations are relevant to the page crawlers.&lt;/p&gt;

&lt;p&gt;Another solution like Astro is &lt;a href="https://qwik.dev/docs/qwikcity/" rel="noopener noreferrer"&gt;Qwik - Qwik City. &lt;/a&gt; which is probably slightly faster still. But perfect is the enemy of good. The goal is not to go from 95 to 100 web page speed scores, It was just to not get failing web page speed scores.&lt;/p&gt;

&lt;p&gt;Anyway. Astro rocks, I will use it next for constellation information leaf pages, and more.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>astro</category>
    </item>
    <item>
      <title>Webgl shaders and POV Satellites</title>
      <dc:creator>Justin</dc:creator>
      <pubDate>Sun, 24 Aug 2025 10:22:58 +0000</pubDate>
      <link>https://dev.to/street-air-5461/webgl-shaders-and-pov-satellites-4n5j</link>
      <guid>https://dev.to/street-air-5461/webgl-shaders-and-pov-satellites-4n5j</guid>
      <description>&lt;p&gt;Today I spent time refining the POV view of the globe from a satellite. To be specific, the ISS. The basic view started like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6o7pb5k5rj9r710qnor4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6o7pb5k5rj9r710qnor4.png" alt=" " width="800" height="848"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Very boring. The globe at night! One can barely even discern the horizon. It is where the stars stop. That's it.&lt;/p&gt;

&lt;p&gt;Adding an atmosphere shader got me a layer of gas. The atmosphere shader is a ray march with a simple rayleigh phase function:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fordj2z4zygq1g0ax9awr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fordj2z4zygq1g0ax9awr.png" alt=" " width="800" height="871"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As I mentioned in the last update, I'm still not happy with the atmosphere layer, but it at least reacts to the presence of sunlight, lighting up before dawn.&lt;/p&gt;

&lt;p&gt;Switching on the "4k" globe texture instead of the dim "no distractions" texture, things are starting to look better:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl2xpg77jt3n0l146052b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl2xpg77jt3n0l146052b.png" alt=" " width="800" height="928"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But there is no cloud layer and the specular highlights on the ocean are unsatisfying. I had ocean specular highlighting on the globe when viewed from a distance so this confused me, where had it gone? tricks used at one distance rarely work well when the camera is close. So after playing around, I managed to recover the specular highlight:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Facrtukgt2ms98jlmj7o9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Facrtukgt2ms98jlmj7o9.png" alt=" " width="800" height="1032"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So now we are starting to see something better. The sun bounces off the ocean. I can dial it up until it really glares. Sunrises and sunsets start to look better.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fovfviqflh1f7ufhylzup.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fovfviqflh1f7ufhylzup.png" alt=" " width="800" height="892"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(Side note: webgl2 should actually support HDR. I've seen one (exactly one) good HDR particle demo that runs on chrome. HDR looks amazing when it works. Since HDR seems half baked in browsers, I put it into the too-hard basket for now. Even caniuse does not know what you mean when you say "caniuse HDR webgl". Despite being an idea since 2021, adoption is glacial. A recent discussion is here:  &lt;a href="https://discourse.threejs.org/t/true-hdr-color-support/78370" rel="noopener noreferrer"&gt;https://discourse.threejs.org/t/true-hdr-color-support/78370&lt;/a&gt; )&lt;/p&gt;

&lt;p&gt;Turning on the cloud layer now. Most critically, making sure cloud shadows are working wrt. the sun gave more of a 3d effect. This the final result:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbbkiyq5an9000g56omr3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbbkiyq5an9000g56omr3.png" alt=" " width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sometimes it looks pretty good in motion with the bright sun glare effects off snow and some lighter coastal waters and cloud drop shadows.&lt;/p&gt;

&lt;p&gt;To get anything close to correct physical rendering is a deep rabbit hole especially when it also has to work at different camera distances. I should stop.&lt;/p&gt;

&lt;p&gt;A real ISS picture of the horizon is so much better. Looking at reality vs the sim again perhaps the specular glint color should be more gold and less blue? Ok maybe I can play with it a bit more...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hpvoc43lzw8gat8arqm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hpvoc43lzw8gat8arqm.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Feature update.. POV mode</title>
      <dc:creator>Justin</dc:creator>
      <pubDate>Sat, 23 Aug 2025 03:09:23 +0000</pubDate>
      <link>https://dev.to/street-air-5461/feature-update-pov-mode-518f</link>
      <guid>https://dev.to/street-air-5461/feature-update-pov-mode-518f</guid>
      <description>&lt;p&gt;If you own an Apple TV you'd know they like to show screen savers of drone shots and what looks like a 4k video from the ISS showing the globe and horizon so today I added POV mode for any satellite.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbf1yab64mul70dq6g7lq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbf1yab64mul70dq6g7lq.png" alt=" " width="800" height="1171"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This as usual proved to be more challenging than expected. Just stick the camera on the satellite, right? &lt;strong&gt;how hard could that be.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Firstly, the camera has to face in some direction. At first I figured facing it in the direction of travel would be sensible but this turned out to be confusing for geo-synchronous satellites whose direction of travel in earth fixed frame is not really travel at all. So for "slow" satellites, the better default camera was looking towards earth.&lt;/p&gt;

&lt;p&gt;After implementing a pan/tilt of the pretend camera, I then struck 3d math issues. &lt;strong&gt;What is "up" in space even anyway?&lt;/strong&gt; On a LEO satellite, up can be the vector from origin of earth to satellite, this is roughly orthogonal to direction of motion but on geo satellites that causes a maths collapse as "up" being too close to same as "where I am looking" doesn't work too well.&lt;/p&gt;

&lt;p&gt;Another problem was that the spherical earth is not tessellated well for a lovely horizon view, &lt;strong&gt;it looked like a geodesic dome!&lt;/strong&gt; so this required switching to high tessellation when switching into POV mode.&lt;/p&gt;

&lt;p&gt;The next challenge was accelerated time travel reveals the approximations between satellite fixes &lt;strong&gt;made the camera jump at every new exact fix&lt;/strong&gt;. So I had to re-calculate (just for the POV satellite) on every frame, the full SGP4.&lt;/p&gt;

&lt;p&gt;As it stands the new feature is getting there. Pan/tilt works. No zoom yet. The earth looks good below in "4k" globe mode. No atmosphere. The sun and moon are impossibly small. That needs to be fixed. In fact the whole sun/moon thing (apparent size in all modes) needs re-doing, really. No mobile touch controls for the pretend webcam, yet.&lt;/p&gt;

&lt;p&gt;The sim also showed the moon almost on top of the sun for my location (and is almost completely un-lit) and I thought that was a bug but it turns out from here at least, the moon is, in fact, almost eclipsing the sun. A few degrees away in altitude and azimuth.&lt;/p&gt;

&lt;p&gt;You can get into POV mode from the last Actions button of a satellite info panel:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flhf9vaucddjfamcfemmd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flhf9vaucddjfamcfemmd.png" alt=" " width="750" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Well, happy with this new mode. A lot of things still to touch up however. No good feature goes unpunished!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Feature update</title>
      <dc:creator>Justin</dc:creator>
      <pubDate>Wed, 20 Aug 2025 03:08:45 +0000</pubDate>
      <link>https://dev.to/street-air-5461/feature-update-30ee</link>
      <guid>https://dev.to/street-air-5461/feature-update-30ee</guid>
      <description>&lt;p&gt;A few things have been added in the last couple of days I should probably explain them here as a way to get used to dev.to posting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Selection of satellites
&lt;/h3&gt;

&lt;p&gt;With 8000 something starlink satellites in the visualiser (or many more if all satellites are loaded) it became quite frustrating to select and unselect individual ones by point and click or touch. To make this easer there is now a widget that keeps the recent selections in a stack. This widget allows&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;clicking the item to zoom the camera to it&lt;/li&gt;
&lt;li&gt;clicking the information symbol to open the larger panel of detail that USED to open&lt;/li&gt;
&lt;li&gt;clicking the x to un-select that satellite&lt;/li&gt;
&lt;li&gt;clicking to unselect all of them.
Oh also you can move that little widget around using the grab handle in the left corner:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fndf0m1efcktsvzdqw6ru.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fndf0m1efcktsvzdqw6ru.png" alt=" " width="398" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Copy/pasting TLEs
&lt;/h3&gt;

&lt;p&gt;I get good suggestions via Feedback but if you don't leave your email I can't say it's implemented. From the satellite information panel you can now click the button to copy the TLE into your clipboard&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5vu2oqrgzp1ap212m64w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5vu2oqrgzp1ap212m64w.png" alt=" " width="708" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Faster on slow connections
&lt;/h3&gt;

&lt;p&gt;Using the network test tab of chrome with "simulate slow connection" it became clear that some textures were making the boot-up pretty unbearable in that scenario (for example, mobile + 3g). Worse, the largest textures are optional: for example, the background universe texture, or the detailed country borders. Now these textures are not loaded if the connection is detected to be slow. The time to load with no constellation selected is dramatically faster and even though loading "all of starlink" involves quite a bit of data, it is now bearable. Since this website is a SPA (single page app), the loading is one time. There is more work I need to do in this area.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deep linking
&lt;/h3&gt;

&lt;p&gt;I'm trying to build out the deep linking in order to go straight to a feature. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://satellitemap.space/constellation/kuiper" rel="noopener noreferrer"&gt;https://satellitemap.space/constellation/kuiper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://satellitemap.space/altitude-history?norad=25544" rel="noopener noreferrer"&gt;https://satellitemap.space/altitude-history?norad=25544&lt;/a&gt;
There might still be bugs with deep links and/or the browser back button.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Some random new-ish features:
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Altitude history
&lt;/h4&gt;

&lt;p&gt;After loading a constellation, you can go to Functions .. Timeline and this shows some tabs including growth (the default), launches and so on. In the Launches tab, the groups of satellites are now clickable : &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F976evouwwvs8stnm2y1s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F976evouwwvs8stnm2y1s.png" alt=" " width="800" height="585"&gt;&lt;/a&gt;&lt;br&gt;
and this goes straight to the altitude-history URL which ...&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjh9nkijvvsoh2dl31qa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjh9nkijvvsoh2dl31qa.png" alt=" " width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;... plots their mean altitude all on a little graph.&lt;/p&gt;

&lt;h4&gt;
  
  
  Constellation altitude slots
&lt;/h4&gt;

&lt;p&gt;Another interesting tab displays how the satellites in a constellation are grouped by altitude, with this year being compared to previous years.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1tsmiy7madr74jb604zq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1tsmiy7madr74jb604zq.png" alt=" " width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see the bump at 360km for the 'direct to caller' starlink hardware in 2025 that was not there a year ago.&lt;/p&gt;

&lt;h4&gt;
  
  
  Re-entry view
&lt;/h4&gt;

&lt;p&gt;This is an old feature but had bugs, now it doesn't have bugs. This screenshot shows the "exploded" view of the starlink constellation (the button with the blue box with exploding sides has been pressed) plus the "Re-entry risk" filter with everything de-selected except &amp;lt;180km. If you look carefully to the middle right of the globe you can see two red starlink satellites that are about to meet a fiery end.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fko1fmm6qzvabs7d6puax.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fko1fmm6qzvabs7d6puax.png" alt=" " width="800" height="745"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>satellitemap.space</title>
      <dc:creator>Justin</dc:creator>
      <pubDate>Wed, 20 Aug 2025 02:41:55 +0000</pubDate>
      <link>https://dev.to/street-air-5461/satellitemapspace-12cg</link>
      <guid>https://dev.to/street-air-5461/satellitemapspace-12cg</guid>
      <description>&lt;p&gt;I decided to start this dev.to account to document changes made to &lt;a href="https://satellitemap.space" rel="noopener noreferrer"&gt;https://satellitemap.space&lt;/a&gt; over time. I'll find a good place to link to it from the site itself.&lt;/p&gt;

&lt;p&gt;The audience is me for a dev diary. Plus, anyone that uses the site and is for some strange reason interested in a more detailed description of ongoing progress &amp;amp; features (with maybe some nuts and bolts dev chat). So this is it. The first post.&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>softwaredevelopment</category>
      <category>development</category>
    </item>
  </channel>
</rss>
