Programmer stands next to a stack of the printed source code for the SpaceX touchscreen

Show thread

@ilovecomputers okay now that I'm awake I know why that picture looked familiar - that's from the Apollo missions :p

@kirjis @ilovecomputers If you guys are wonder what this pile of software was for, check out Scott Manley's summary on the AGC, the main flight computer of Apollo program. This software could autonomously land the LEM on the surface of the moon and bring it back. Since it had no vision, the computer also allowed the pilot to hover the spacecraft in search of a flatter spot with a "joystick". There were also programs for docking, telemetry, alarms, aborts and more.

Those with some time on their hand should also watch this incredible 26-part documentary on the restoration of a real Apollo Guidance Computer led by a team of hackers.

@kirjis @ilovecomputers

This epic restoration culminates with them hooking up the working computer into a "moon simulator" which generates all the sensor inputs, allowing the original code to re-enact the 1969 guided descent to the moon 😎

@kirjis @ilovecomputers

Like in 1969, the simulation triggered the dreadful alarm 1202 (executive overflow), from which the AGC could recover gracefully and continue guiding the Eagle all the way to the surface 🥺

@kirjis @ilovecomputers

@codewiz @kirjis @ilovecomputers This is amazing. I have no idea when I will have time to watch 24 parts of this, but that tab has earned a permanent spot in my browser. :)

@ilovecomputers the stuff about needing redundancy because solar flares can flip bits makes me so glad I don't program for space

@ilovecomputers why not ? They are useless anyway, mostly for stats x)

as far as I understood everything is automated at most, or controlled by the big buttons

@Miaourt @ilovecomputers but even that post's talk of the underlying systems is a little frightening. Linux kernels on multiple cores? I hope they only run one process and it's run as a real time process, but really, shouldn't rockets be using minimal real time operating systems, like those on fight computers?

@djsumdog @ilovecomputers I'm not a rocket engineer :blobcatgoogly: also keep in mind that as of today planes kinda crash because they try to fix hardware issues with software so why not...

@lunch @ilovecomputers Ah, but can we do better than as cheaply? Always go for the tech for which you can find labour the cheapest.

...we are doomed.

@aidalgol @ilovecomputers they're building a spaceship with defense contractor dollars, they can afford a few thousand per year extra to get a UI developer that knows not to stick ***the web*** in everything

@lunch @ilovecomputers I know, it's stupid. Some commercial videogames also embed a web browser and use a web app for the in-game overlay. It's insane, and makes the task harder than it needs to be.

@aidalgol Wait, really? That sounds insane! What kind of games do that? Please name a few you know of. D:

@sindastra The only ones I know for sure are at least some of the more recent EA sports titles, but I don't know which releases exactly. And my source is a conversation with a former EA developer, so I can't cite anything offhand.

@aidalgol @sindastra I mean, in fairness, the old approach was to embed middleware which ran a flash movie for your UI, and both flash and the middleware are no longer commercially available to license, so

@ticky @sindastra Oh god, why?? Why does the game industry keep writing engines that are both performant *and* bloated?

@aidalgol @sindastra I mean, what’s your suggested alternative?

the goals are for something which can be scaled to any resolution, contain dynamic content, handle custom 2D animations and functionality, respond to mouse movement and inputs, and which doesn’t require a lot of custom implementation - and guess what, most of that is done for you if you just embed webkit 🤷🏻‍♀️

@ticky @sindastra I guess I'd try an immediate mode GUI library first.

re: spacex 

@ilovecomputers "The triple redundancy gives the system radiation tolerance without the need for expensive rad hardened components"

this doesn't seem wise but i don't know enough about radiation to dispute it

@katnjia @ilovecomputers At least the relevant software, away from the buttons is C/C++ on two computers and only running, if they both compute the same.

@alsternerd @katnjia @ilovecomputers Which might not matter if the UI doesn't work correctly. You also need redundant UI machines both computing and comparing screen buffers to make sure the user sees correct data.

Then you have to make sure the display shows the verified screen buffer...

A nightmare using standard hardware.

@ilovecomputers unpopular opinion apparently: I don't see the problem. With good coding practices, JavaScript is fine. They're not flying on JavaScript, it's only used for the interface.

@yarmo @ilovecomputers
I would argue that JavaScript has alot of dependencies on things that dont directly benifit the functionality of the UI. Possibly thoes computer resources could be better used for aditional functionality or redundancy.

@SwindlerOfInsanity @yarmo @ilovecomputers Any unnecessary line of code in there might mess things up if not rigorously tested. The more code, the more you have to test.

JS is especially expensive to test compared to strongly typed languages.

@leftbit @SwindlerOfInsanity @ilovecomputers good points. So then why do you think they did it? Surely there's more to it than mere incompetence.

@yarmo @SwindlerOfInsanity @ilovecomputers Probably - guess you'ld have to read some thousand pages of specs to get the whole picture...

On the other hand - what are the alternatives? Building a UI in C++ has its own pitfalls. Java/Swing is old and established...

Personally, I'd go with an old-fashioned modular Apollo-like cockpit...

@yarmo @leftbit @ilovecomputers
I suspect Tesla probably used the js web ui in tesla vehicles so its a tested known process for them. Time is money and the resources could be better spent elsewhere. The computers are probobly a little over built to leave room for future usage anyways.

@yarmo @leftbit @ilovecomputers
Its still just so mind blowing. We went from computational poverty to abundance in such a short time. We now have soo much compute power at our finger tips we literally have to find ways to waste it XD.

@ilovecomputers also, a touch screen-based interface in an environment where all operators are wearing thick gloves and are expected to work at zero G is the worst possible UX design choice I've ever seen

@ilovecomputers this is the most cursed thing that could have come from the launch I think

That's our logics NASA only use only tech with a good documentation and long experimentation, safe and secure tech for space. 😁

@ilovecomputers @thegibson A quote I heard and it may have been apocryphal so I won’t name the supposed source was that the Dragon was “like flying an iPhone”. That was said supposedly in awe, as a good thing.

This provides other perspective.

I saw in reference to the Ars Technica article pointing out Musk’s joke response that “the trampoline worked” to the Russian’s 2014 joke that American astronauts might need to use a trampoline to get to orbit. Trampoline, indeed, eh?

@ilovecomputers well, why not?

Mastodon is the same and it rocks. Pretty much _everything_ is built this way in 2020, and I don't see why space should remain stack in the '60s with ADA and COBOL.

@ilovecomputers Important clarification: I'm a C/C++ developer and I play with Rust in my free time.

I dislike JS as much as any other interpreted, dynamically typed, garbage collected language... probably even more because it has shitty semantics too.

But I still think web technologies are the best tool nowadays to iterate quickly and build modern, usable interfaces.

@ilovecomputers can wait until somebody installs an adblocker and the systems won't load. lol.

@ilovecomputers I guess, the answer is "Why not?"

These people don't have time for a multi-month re-implementation of all the UI widgetry in a bespoke language. They are not trying to prove some obscure point of CS, they are trying to have a workable interface that feels comfortable to use in a stressful situation.

Since their JS engine lives in a self-contained custom system, all inputs are known. JS can produce a reliable UI in those circumstance like any other programming language.

Sign in to participate in the conversation

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!