Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I think I was the person who originally proposed to implement the crew control UI in a web browser, and I participated in a week-long retreat in beautiful Bend, Oregon where we implemented the first prototype.

At the time, some very good flight software engineers had been working diligently on a new UI framework that was written in the same code style and process as the rest of our flight software. However, I noticed a classic problem - we were working on the UI platform at the same time that we were trying to design and prototype the actual UI.

I made some observations:

1) We can create a prototype right now in Chrome, with its incumbent versatility.

2) The chip running the UI can actually reasonably run Chrome.

3) Web browsers are historically known for crashing, but that's partly because they have to handle every page on the whole Internet. A static system with the same browser running a single website, heavily tested, may be reliable enough for our needs.

4) We can always go back and reimplement the UI on top of the space-grade UI platform, and actually it'll be a lot easier because we will know exactly functionality we need out of that platform.

The prototype was a great success; we were able to implement a lot of interesting UI in just a week.

I left SpaceX before Crew Dragon launched, so I'm not sure what ended up launching or what the state of affairs is today. I remember hearing some feedback from testing sessions that the astronauts were pleasantly surprised when we were able to live edit a button when they commented it was too hard to reliably press it with their gloved finger.

As for reliability, to do a fair analysis you need to understand the requirements of the mission. Only then can you start thinking about faults and how to mitigate them. This isn't like Apollo where the astronauts had to physically reconfigure the spacecraft for each phase of the mission -- to an exceptionally large extent, Dragon flies itself. As a minor example of systemic fault tolerance, each display is individually controlled by its own processor. If a display fails, whether due to Chrome or cosmic radiation, an astronaut can simply use a different display.

Also, as a side note regarding "touchscreens" -- I believe some (very important) buttons did launch with Crew Dragon, but buttons and wiring are heavy, and weight is the enemy. If you're going to have a screen anyways, making it a touchscreen adds relatively trivial weight.



Wow a real SWE showing up and explaining how you can actually approach a real problem using a browser. Instead of just going "well its not compiled so clearly it will just randomly explode".

I am always amazed how HN doesn't realize many mission & life critical systems are powered by JS - especially as a front end through a browser.


> I am always amazed how HN doesn't realize many mission & life critical systems are powered by JS - especially as a front end through a browser

I am always amazed how some people believe that adding more levels of abstraction leads to safer systems. /s


Can you not see it? Abstraction = time savings, things can be tweaked to be closer to perfect state, and can be tested to hecky because of the ease of development.

As long as the risks are acceptable (single non mission critical display out of many may rarely crash) then it's fine imo.


When would the Chrome version be frozen? Once you've completed the UI?


> When would the Chrome version be frozen? Once you've completed the UI?

Updates keep us secure. /s


Why doesn't anyone at Boeing make these observations? I don't think anyone needs to be persuaded that a browser is a good UI middleware.


I suspect that Boeing has a lot of momentum and the risk/reward for pushing an initiative like that doesn’t make sense in that org.


So the implementation speed came solely from developer experience and not someone pushing away this custom UI framework implementation aside?


This is how most of the YouTube clients work. They shipped a strip down web renderer (I forget if based off chrome or not) with an extremely stripped down set of HTML/CSS/JS features - just enough to run the YouTube UI.

Still get a familiar development experience, live updates, and able to run on constrained devices.


At a minimum it should use typescript, no? Also web pages get out of sync sometimes, and need to be reloaded, which doesn’t sound great for mission critical reliability. Compiled, typed UI lib sounds like a better fit.


Unless something actually crashes, which any code could do, then why would you need to reload? Just send a websocket message that requests the current full state.

But if it's implemented correctly, it probably won't get out of sync.


Remote code doesn’t load correctly sometimes, just a fact of life in a distributed system. Maybe loading it locally reduces that to almost zero, but I’d still be more comfortable risking my life with a desktop app.


How is a browser rendering local files on a machine without an internet connection not "a desktop app" though?


>I think I was the person who originally proposed to implement the crew control UI in a web browser, and I participated in a week-long retreat in beautiful Bend, Oregon where we implemented the first prototype.

Please tell me you have a blog





Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: