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

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/BWFP

https://github.com/rongarret/tweetnacl/blob/master/tweetnacl...

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.



>... 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?


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


Not the author, nor an expert, but I'm guessing it could be setup so that the 'OS' throws and interrupt when it receives a transmission signal requesting the REPL process [1]. So whatever normal processes that the device needs to run would get paused by the interrupt signal, and the REPL process would start up.

[1] https://en.wikipedia.org/wiki/Operating_system#Interrupts


You can check how SLIME [1] works to get an idea of that.

[1] https://common-lisp.net/project/slime/


I used to work on flight software for a private company. It seemed like inertia from "heritage" always drove lots of decisions. From my memory, I remember quality assurance from NASA getting hung up on the following items during design reviews:

1) an RTOS they weren't familiar with

2) a language they weren't familiar with (the familiar set was Ada, C, C++)

3) dynamic memory allocation

How much push back did you get from quality assurance?


Lisp was not the RTOS, it was a process running under the RTOS (vxWorks). Nonetheless, we did use a Lisp with a hard-real-time GC. That helped allay some of the dynamic memory allocation FUD.

We got a ton of pushback about the unfamiliar language, but Lisp eventually won out because back then there really was no viable alternative. They actually tried to port the code to C++ and failed (running afoul of Greenspun's tenth and the immaturity of C++ compilers of the day).


Regarding the Signal double-ratchet: I'd be very interested to see an implementation in Lisp of it.


OK, give me a day or two to get it into a releasable shape.



would it be possible to make the files available again please?

http://www-aig.jpl.nasa.gov/public/home/gat/ftp/

Thank you!


I have no idea what was there. That was a long time ago. If there's a particular item you are looking for I might still have a copy in my archives, but that directory is probably gone forever. You can contact the JPL public information office to ask if they archived it, but I would be shocked if they did.


A fellow^1 pointed us to

https://web.archive.org/web/19991014000627/http://www-aig.jp...

which leads to

https://web.archive.org/web/19990219163754/http://www-aig.jp...

containing a listing.

The papers and hqx-s would be most interesting! (MCL 2 is not a concern, it can be happily emulated too)

CMU also has an interesting reference to your work:

https://www.cs.cmu.edu/~chuck/robotpg/robofaq/13.html

Thank you for your kind effort!

^1 https://news.ycombinator.com/item?id=13628967


OK, let me see what I can do.




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

Search: