Hacker News new | ask | show | jobs
by Denote6737 870 days ago
"The processor on Ingenuity is 100 times more powerful than everything JPL has sent into deep space, combined," Tzanetos said. This means that if you add up all of the computing power that has flown on NASA's big missions beyond Earth orbit, from Voyager to Juno to Cassini to the James Webb Space Telescope, the tiny chip on Ingenuity packs more than 100 times the performance.

This is what blows my mind. a 2015 smart phone has more power than everything else. proof that modern programming can be massively wasteful on resources.

6 comments

> This is what blows my mind. a 2015 smart phone has more power than everything else.

Not really. The things that regular end-users do on their smartphones are computationally much more intensive than what you deploy on the edge in space. I'll be the first to gripe about the inefficiencies of modern front-end programming, but the software on a Mars rover also just doesn't have that much number-crunching or throwing around ginormous assets to do.

A much more interesting question is to ask what you could do on Mars if you had that compute power. For example, how realistic is it to expand further on autonomous capability.

Percy has some degree of autonomous driving capabilities, requiring fair bit of image processing. I'm sure the autonav programmers would love more compute to be able to literally drive faster; the improvements from Curiosity to Perseverance already made huge difference.
The question is whether you need to. Yeah, it would be cool. Yeah, you could probably go faster. But usually, none of that is worth it. The science can still get done without it.
I think it’s a bit more complicated than that - yes, a ton of great science has been done but there is also a considerable amount of time spent working around limitations, too, and some of those lead to less science being done over the life of the mission.

As a simple example, greater autonomy might allow the rovers to do more by avoiding the number of times where they have to wait for the speed of light (20 minute one-way latency plus annual blackouts) & bandwidth delays for someone at JPL to learn about an obstacle, decide what to do, send commands, and see what happens. They’ve spent a lot of time doing that cautiously because the failure mode of some outcomes is losing a rover, but there are other scenarios where the same is true in the other direction so I’m sure they’re keenly working on ways to make it better able to handle safety navigation and various recovery scenarios for things like losing communications, but I’d expect that might come in the form of a system which operates as they have but logs what it would have done so they can compare the human and robotic commands.

You have to understand that most space missions are essentially webcams attached to a remote-controlled vehicle. You don't need hardly any onboard processing 99% of the time if you're just executing a sequence of actuator commands and maintaining PID loops.

It's only very recently that they've started to look at what the sensors are giving onboard the craft. I'm glossing over some very important details, but mainly, the sentiment holds: Spacecraft didn't have to do much, so they didn't have to think much.

The most intensive work spacecraft used to have to do would be to apply a (lossless, hopefully) compression algorithm to send more data over a limited high latency link. I wonder how much forward error correction capacity they allow for.
More than anything, this is great evidence that traditional aerospace has greatly overestimated the risks of using mass-produced terrestrial hardware.
It certainly points in that direction but it does make me wonder what it’d look like with n>1. Anything crewed would be more conservative but you’d also want that for other things - it’d be really bad if you had a correlated failure on an entire satellite network after a freak event or because a problem only showed up, say, 4 years in.
I think the networks actually get more reliable not less, because they're designed to be redundant and you have so many nodes one failure is tolerable. That's how it is for us at www.careweather.com.

I guarantee Starlink isn't using components from the 1990s.

Oh, I’m sure they’re big on redundancy. I mentioned correlated failures, however, because that has multiple failure modes and the one I was thinking about is something like physical degradation: redundancy doesn’t help if all of your redundant nodes have a component which fails at roughly the same time. There’s a reason why storage admins learned to mix hard drive brands and manufacturing batches in RAID arrays, and that problem is much harder to solve in space.
> proof that modern programming can be massively wasteful on resources

Depends what you consider resources. CPU cycles are resources. Programmer hours are resources.

> Proof that modern programming can be massively wasteful on resources

Alternatively, consider the possibility that what a smartphone does is a lot more computationally complex than you realize.

Disclaimer: I worked on smartphone chips for many years, including the Qualcomm chip that ended in Mars.

the two sentiments are one and the same; the phone does indeed do a lot: I can observe that it is slow to load things. Thats because it's doing computationally complex things. The problem is I don't want it to be doing computationally complex things. I want to use an irc chat equivalent. The reasons behind it may be all sorts of fancy features im not using - the engineers that made those tradeoffs on my behalf, collectively, have added up to an enormous amount of wasted processor power.

The things that seem the most computationally complex, like viewing hd video streamed over the internet in realtime, work fine on my phone. But mundane tasks I know shouldn't by any rights be complex regularly take forever to complete. Because they're probably negotiating some nonsense protocol for the bluetooth headphones I connected three weeks ago while facebook tries to access my gps signal for the tenth time this second while sending an updated list of every gesture, tap, and scroll to thousands of separate parties, each individually as a separate task

> The problem is I don't want it to be doing computationally complex things. I want to use an irc chat equivalent

Have you considered the possibility that the phone is doing what most phone users want, and that their needs being more complex than yours doesn't mean that "programming can be massively wasteful on resources"? Instead, the phone you purchased is not fit for your purposes.

> But mundane tasks I know shouldn't by any rights be complex regularly take forever to complete

It is also possible that what it takes to complete that task is somewhat more complex these days than you realize. Not because it's poorly programmed, but because the software is designed to support many more features than you are currently using. An individual user may only rely on 5% of the features, but different users want a different set of 5%. Supporting other people's needs isn't any more wasteful than supporting your needs.

One Voyager probe cost a billion dollar. I‘m not sure your Todo app can afford to be written in assembly.