Here's an interactive WebGL implementation: https://brian.sh/around/index.html
It doesn't have a satellite image option, but that would arguably be simpler than drawing continents like it does now. It uses a seldom-redrawn base canvas (menu -> debug > show 2d texture) then the discs are drawn with a simple shader.