
Lisping at JPL (2002) - gkya
http://www.flownet.com/gat/jpl-lisp.html
======
lisper
Author here. I'm on the road today so latency will be high but I'm happy to
answer any questions people have. Also, a shameless plug: I'm still coding in
and writing about Lisp. Some currently active projects:

[https://github.com/rongarret/ergolib](https://github.com/rongarret/ergolib)

[https://github.com/rongarret/BWFP](https://github.com/rongarret/BWFP)

[https://github.com/rongarret/tweetnacl/blob/master/tweetnacl...](https://github.com/rongarret/tweetnacl/blob/master/tweetnacl-
bindings.lisp)

And I just finished (but have not yet published) a Lisp implementation of the
Signal double-ratchet. If anyone is interested let me know and I'll publish
that too.

~~~
na85
>... hardware that is 100 million miles away is an interesting experience.
Having a read-eval-print loop running on the spacecraft proved invaluable in
finding and fixing the problem

So...

How exactly does it work to have a repl on the spacecraft?

Doesn't the system halt while it's waiting for user input?

~~~
lisper
No. We used a multi-threaded Lisp. One thread ran the REPL, and other threads
ran the RAX code.

------
codr4life
" One of the reasons I stayed at JPL for twelve years was that I was appalled
at what the software industry had become. The management world has tried to
develop software engineering processes that allow people to be plugged into
them like interchangeable components. The "interface specification" for these
"components" usually involves a list of tools in which an engineer has
received "training." (I really detest the use of the word "training" in
relation to professional activities. Training is what you do to dogs. What you
should be doing with people is educating them, not training them. There is a
big, big difference.)

To my mind, the hallmark of the interchangeable component model of software
engineers is Java. Without going into too many details, I'll just say that
having programmed in Lisp the shortcomings of Java are glaringly obvious, and
programming in Java means a life of continual and unremitting pain. So I vowed
I would never be a Java programmer, which pretty much shut me out of 90% of
all software engineering jobs in the late 90's."

Word, this needs to be seen for what it has turned into if we're ever going to
get out. I've tried every kind of paid software dev setup, it's all abusive
business bullshit these days.

~~~
pjmlp
These days, companies like Google think that even Java is too advanced for cog
developers.

~~~
planteen
What do they push instead? Python? Go? JS?

~~~
notduncansmith
Many language decisions in Go (e.g. lack of generics, baked-in magic
concurrency primitives, extensive focus on imperative looping, baked-in
formatting conventions) are arguably designed to homogenize developer output.
This is essentially making decisions for the developer and limiting
cleverness, but many developers feel a sense of liberation (rather than
limitation) as they are freed from making those decisions, and instead can
settle into the comfortable task of translating natural language into code
(presumably homogenized to as few constructs as possible to make it easier for
Google to train the AI that will replace them).

------
gkya
A famous quote from this article:

 _The Remote Agent software, running on a custom port of Harlequin Common
Lisp, flew aboard Deep Space 1 (DS1), the first mission of NASA 's New
Millennium program. Remote Agent controlled DS1 for two days in May of 1999.
During that time we were able to debug and fix a race condition that had not
shown up during ground testing. (Debugging a program running on a $100M piece
of hardware that is 100 million miles away is an interesting experience.
Having a read-eval-print loop running on the spacecraft proved invaluable in
finding and fixing the problem. The story of the Remote Agent bug is an
interesting one in and of itself.)_

------
rurban
I happened to be at the 40th LISP anniversary conference 1998, with John
McCarthy. Erann's JPL talk about the Remote Agent was by far the most
interesting talk there, and I still consider it one of the best conference
talks ever. I'd really like to see the slides being published.

I also attended this famous "dinner with eric" at the same conference,
actually sitting next to Eric and Erann was sitting on the other side:
[http://blog.rongarret.info/2009/06/my-dinner-with-
erik.html](http://blog.rongarret.info/2009/06/my-dinner-with-erik.html) I
liked Eric a lot, and really enjoyed his troll interactions with Xah Lee, one
of the most famous trolls ever. Unfortunately he didn't know exactly who to
pick a fight with. Erann was clearly the wrong target. Erann hated it. But as
outsiders who stayed out of those silly fights we learned a lot, what boils in
a LISPer. XML especially. Or Windows. Or special variables:
[https://groups.google.com/forum/#!msg/comp.lang.lisp/WRQkT57...](https://groups.google.com/forum/#!msg/comp.lang.lisp/WRQkT572RQ0/OvN9X5oNq8MJ)
A very good CLL thread btw. Most of the people agreed with Eric, even if
Erann's proposal was very good.

(I used his old name to be able to look things up. The name change happened
much later, when Erann got married and choose a better name, Ron Garret.)

PS: Eric said 99 in his lugm blog post, but I'm pretty sure it was 98.
[http://naggum.no/lugm-time.html](http://naggum.no/lugm-time.html)

PPS: I found some old RA material here:
[https://web.archive.org/web/19991014000627/http://www-
aig.jp...](https://web.archive.org/web/19991014000627/http://www-
aig.jpl.nasa.gov/public/home/gat/) but mostly for ESL (the control language),
not the actual RA simulation and HW stuff he was emulating.

~~~
gkya
There's this (edit: 2012 Google Tech Talks) video:
[https://www.youtube.com/watch?v=_gZK0tW8EhQ](https://www.youtube.com/watch?v=_gZK0tW8EhQ)
"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".

~~~
rurban
Yes, that's about the same content. Excellent, thanks a lot.

I often think about how to control or even reboot a CPU out there in space,
running on slow hardened HW (cosmic rays shooting at you), and if you make a
small mistake and the thing doesn't boot up properly the whole mission is
lost. You must be really sure about the root cause of your problem, and
properly analyze it (hence his simulation), otherwise no chance.

Like a reboot via SSH, just a bit trickier, because nobody will be able to
help you.

------
wtbob
> I can't even say the word Lisp without cementing my reputation as a crazy
> lunatic who thinks Lisp is the Answer to Everything. So I keep my mouth shut
> (mostly) and watch helplessly as millions of tax dollars get wasted.

I've been there too, only in the commercial world watching corporate profit be
wasted. It's really disheartening to see the computing world re-invent
S-expressions badly (first as XML, then as JSON) and reinvent Lisp badly (e.g.
JavaScript). Lisp really is awesome, and it really is the best language of
which I'm aware, if for no other reason that if one wants to do enough
programming _in_ the language, then one can implement any other language,
seamlessly.

~~~
B1FF_PSUVM
> in the commercial world watching corporate profit be wasted

And, somehow, the beancounters with the spreadsheets to squeeze the last
microdollar from an operation have not hit on a way to make money from this in
sixty years.

Puzzling.

------
sdfaasdf
You have to know "design patterns" they said. You have to know Java they
said.... and then I knew I was in the world of "professional" software. Sigh.

------
gaius
People have this idea of scientists in general and NASA in particular as being
purely objective and data-driven and let the science speak for itself, but
articles like this illustrate that they are _at least_ as political and
irrational as any commercial entity.

~~~
gkya
Politics is a human thing, it is an artifact of interaction of persons and
peoples. And irrationalness is as human as a fart, you know it's rude and it's
wrong, but sometimes it happens. The fact is, we're hard-wired to be politic,
irrational and superstitious.

~~~
B1FF_PSUVM
> sometimes

mostly always

