" 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.
It's funny how they managed to smear enough lip stick on top of that idea to make us beg for it. These days you're not even allowed to question the less power is more mantra in Go circles, even though it goes against all common sense. We need to back track to where we lost track of the goal. Which is what I'm doing these days instead of playing the system, https://github.com/codr4life/lifoo.
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).
My 2 cents: there are sites like Rentacoder.com. Are there any RentaManager or RentaCxO.com sites? Does anyone discuss off-shoring management or executive positions to save money?
I went from startup, to consultant, to freelance, to startup, to big company, to startup, to freelance. There is nothing in there that's worth the effort for me any more; I would rather starve than waste one more second on filling someone else's pockets with money using the wrong tools while being treated as dirt. That silly game is so over.
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:
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?
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.
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).
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.
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.)
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
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... 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.)
Xah Lee still updates his 1995 domain http://xahlee.org/ "the hacker news yc is truly idiotic. when in tablet, need a microscope to read. 1990s html, written in a born dead arc lisp."
There's this (edit: 2012 Google Tech Talks) video: 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".
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.
Just talked with Ron Garret about this dinner event. They were actually 2 separate events. His blog post was about a dinner with those two alone, and I was with them on another evening, me sitting next to Eric.
Interesting events 19 years ago. Ron changed his name in the meantime (and made Google AdSense), while Eric died horribly. Alone. From a stomach problem or such.
> 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.
> 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.
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.
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.
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.