The Remote Agent Experiment: Debugging Code from 60 Million Miles Away
Google TechTalks1 HN recommender · recommended in 1 month, 2012-2024
23K views · 14 years ago · talk · evergreen
Ron Garret tells the story of the Remote Agent Experiment on NASA's Deep Space 1, where autonomous software controlled a spacecraft in 1999. He describes debugging Lisp code remotely from millions of miles away.
Cited in Lisp and safety-critical software threads as the definitive firsthand account of the DS1 remote REPL debugging episode.
1:03:45How We Diagnosed and Fixed the 2023 Voyager 1 Anomaly from 15 Billion Miles Away
Flight Software Workshop
17K views • 1 year ago
35:25Saving Voyager 1! - Bruce Waggoner at !!Con 2024
!!Con
8K views • 2 years ago
16:04Jonathan Diegelman - Modeling Spacecraft Separation Dynamics in Julia
The Julia Programming Language
12K views • 5 years ago
28:11Why Everyone Is Talking About Data Centers In Space
Scott Manley
408K views • 10 months ago
49:09Debugging with the Scientific Method - Stuart Halloway
ClojureTV
25K views • 10 years ago
40:55"Controlling Time and Space: understanding the many formulations of FRP" by Evan Czaplicki
Strange Loop Conference
69K views • 12 years ago
4:46Debugging Lisp: fix and resume a program from any point in the stack - how Common Lisp stands out.
vindarel
5K views • 3 years ago
43:04"Stop Writing Dead Programs" by Jack Rusher (Strange Loop 2022)
Strange Loop Conference
468K views • 4 years ago
32:02Autonomous Testing and the Future of Software Development - Will Wilson
The Linux Foundation
7K views • 7 years ago
52:29"I See What You Mean" by Peter Alvaro
Strange Loop Conference
59K views • 11 years ago
35:15Solid Ground // Saša Jurić
EMPEX Conference
14K views • 9 years ago
9:59Intentional Programming demo (Part 1) - Editor
dftube
14K views • 20 years ago
1:18:42Web Development in Emacs, Common Lisp and Clojurescript - Emacs SG
Engineers.SG
14K views • 10 years ago
1:24:38Lecture 7A | MIT 6.001 Structure and Interpretation, 1986
MIT OpenCourseWare
35K views • 17 years ago
29:48Trace Driven Development: Unifying Testing and Observability - Ted Young, LightStep
CNCF [Cloud Native Computing Foundation]
2K views • 7 years ago
36:14Barliman: trying the halting problem backwards, blindfolded - William Byrd, Greg Rosenblatt
ClojureTV
8K views • 9 years ago
41:06"Unison: a new distributed programming language" by Paul Chiusano
Strange Loop Conference
45K views • 7 years ago
1:12:56Lecture 1A: Overview and Introduction to Lisp
MIT OpenCourseWare
420K views • 7 years ago
59:50Leslie Lamport: Thinking Above the Code
Microsoft Research
403K views • 12 years ago
1:18:03Dtrace Review
GoogleTalksArchive
19K views • 14 years ago
8 comments from Hacker News
It's actually not that hard to explain, yet without experiencing it firsthand, it is hard to see what this REPL fuzz is about. So, let's take a minimal, simple example: if True: print("Hello, Python!") and the equivalent code in Clojure: (when true (println "Hello, Clojure!")) In Clojure, you can send any expression fragment like a single symbol, list or even incomplete code and it will be evaluated according to its context. So, you can sent `true`, you can send `println` and you can even send `(when true println)` or `(when true (println))`, or even `(when true ,,,, (println))` (you can replace commas with line breaks if you want) and it will still be evaluated. In Python, you can send `True`, and you can send `print`, but you can't send `if True: print` (even with corrected indentation), because Reader would have hard time making sense of that. In Python, you need to adhere strictly to its syntax, and partial expressions that don't form a complete statement won't be evaluated meaningfully. In contrast, Clojure's REPL can work seamlessly with code fragments because the underlying representation of code is just data structures that are always valid within the REPL context. What makes it mind-blowingly cool is that you can send these expressions to a remote REPL without any transformation, serialization, or encoding, because it's not just code — it is data. In fact, some teams do just that. They'll keep an open socket on a running app, possibly performing somewhere in the clou
This is what I was mainly known for: link link I think I'm most proud of this: link link though it didn't make nearly as much of a splash. I was also the tech lead on the New Millennium Deep Space One Remote Agent Executive, which sounds cool, but was really kind of a disaster. See: ▶ this video if you want the gory details.
I'm reminded of Ron Garrett's writing/talks on remote debugging the Remote Agent for the New Millennium Deep Space 1 (DS1).[0], [1] [0]: The Remote Agent Experiment: Debugging Code from 60 Million Miles Away - ▶ this video [1]: NASA Programmer Remembers Debugging Lisp in Deep Space - link
Unless you write it in CL, in which case you get a debugger REPL, and you can debug it hundred of million of km away. ▶ this video
There's this (edit: 2012 Google Tech Talks) video: ▶ this video "The Remote Agent Experiment: Debugging Code from 60 Million Miles Away" by Ron Garret. IDK how similar it is to the 1998 talk by him you refer to. I guess he's around here by the nick "lisper".
A more detailed (and accurate) account: ▶ this video Stuart got one significant factual detail wrong: the race condition was in Lisp code.
> What part of the stuff from that link was written in Lisp? All of it. (Except for an IPC system which was written in C. See ▶ this video if you want to know the whole story.) > Would you answer them? I'll answer a few of them. > if Lisp is so wonderful compared to C, how come so many more safety-critical systems are written in C? Politics mainly. And inertia. And the sunk cost fallacy. > Is it because the entire profession is blind, and only you and a few enlightened ones realize how wonderful Lisp is? Yes. Pretty much. > Or is it because people that have done this for decades see more problems with Lisp than you are aware of? They, like you, think they see problems, but they, like you, are wrong. Tellingly, none of the people who think there are problems with Lisp actually know Lisp.
Related Google Tech Talk: Debugging Code from 60 Million Miles Away ▶ this video Ron Garret talks about DS1, a project in the 90s where a small team used Lisp to send an autonomous craft into space in a third of the time and at a fraction of the cost of previous comparable projects. (Yes, I couldn't have made up a more HN-friendly story if I tried.)