'Extreme Programming' Controls Phoenix Mars Lander
pbd points out a story discussing the challenges faced by NASA engineers in designing the code sent to operate the Phoenix Mars Lander. Quoting Computerworld:
"On Wednesday, engineers sent up the code to run an actual analysis, but a satellite orbiting Mars, which transfers the data down to the Lander, was offline. Robinson explained that the satellite had been hit with radiation, knocking it into safe mode. 'Space is a harsh environment, and sometimes they just go into safe mode,' he noted. 'It's a minor problem. [The satellite] aborts whatever it was doing and waits for future commanding.' Engineers successfully resent the code on Thursday."
Not sure about others, but designing software and systems (software & hardware) that understand the data they are using, and when conditions are not right AND know how to go to safe mode rather than just fall apart is awesomeness in physical form.
:)
:)
Then just considering it a minor problem is an even higher form of awesomeness
As a hobby I build small robotic creations. I can tell you that working with limited resources, and having to deal with the completely unexpected is just brain damage for the fun of it. Testing your new code on the same hardware you've had for months and thinking "I really did not know that you could bend this metal piece with so little force" or "why the hell is it doing that" and find out that you missed a decimal point on force calculations or a typo leaves you reacting with subroutine x instead of y.
Those engineers have to be fscking proud of their work. I know I would be. Some days I look at code I've had running 24/7 for several years and am amazed, not just at myself, but that I managed to find the bugs and fix the "I didn't know that would happen" issues. It's a lot of type and bounds checking to be certain, but something always creeps in.
I say they should be proud. The Mars missions have been nothing short of exemplary awesomeness. When they figure out the failure they did have, I'm certain that the absolute goodness they built into it will help reveal totally amazing discoveries about why there was a failure. Nothing simple like metric conversions, or wrong alloy for the screws.
Makes me want to work with them.
Support NYCountryLawyer RIAA vs People
This article doesn't state the lander was programmed with Extreme Programming techniques.
There's just one sentence which says something about "presents extreme programming challenges" which is the closest this article comes to mentioning Extreme Programming.
What does this have to do with the word extreme?
Think X-Games dude.
The cost of that cleanup, of course, will be borne by taxpayers, not industry.
Sure, there's complicated software systems, but when something has to deal with hardware too, there's just a lot more to think about in every action. That's why engineers make abstractions -- enough to keep their part of a particular project in their head.
But shouldn't the "safe mode" limits be independent of the particular operation as much as possible? In software engineering, the people writing test cases are often not the same as the people developing the code, and for the reason that they want to match both to the spec, not to each other.
--
Hey code monkey... want to learn electronics?
Er, or something like that.
I got the impression that the NASA technique has nothing to do with pair programming, coding the unit tests first, and the other elements of Kent Beck's faddish Extreme Programming methodology. And more to do with having damn little time to write code and get it right, or literally priceless science may be lost.
Extreme publishing! Shit I hope it doesn't catch on.
I've resented a lot of code I've written!
I gathered that if they uploaded a bad string, the lander gathers dust for a wasted day. Beaucoups dinero riding on correctness. Matthew Robinson's team look like heroes, this is like the triumph of the coders.
The cost of that cleanup, of course, will be borne by taxpayers, not industry.
I'm wondering what units they are using? American? SI? or Martian?
... but when I hear terms like "EXTREME PROGRAMMING!!!1eleven" I just roll my eyes and stop listening.
What part of `yes no` don't you understand?
Guys, no need to be like that. Just because the code didn't transmit properly the first time is no reason to be bitter.
--Justin
According to TFA, each member of a team of 30 engineers must write ~1500 lines of code, per day, in order to control the robotic equipment on board. This coding is done in C. Does this strike anyone else as a brain dead way to control a robot on a day to day basis? Why do they have to write the commands in such a low level language. Can't they abstract this into a more manageable format?
Aside from having a strong general dislike for anything 'extreme', this is wrong because this is obviously (at least from what I saw) NOT extreme programming, it's programming for harsh environments (no not Windows :).
Crappy title.
If you can read this... 01110101 01110010 00100000 01100001 00100000 01100111 01100101 01100101 01101011
I hope they mean this type of Extreme Programming.
Are you sure you want to do this, Windows cannot verify the software that is going to be installed on your Vista Lander system!
Decaf?
Lots of engineers resent their code, I'll bet.
Having a plan that requires 1000 lines of new C code every day is f'ed up beyond all belief. Someone doesn't know what they are writing about.
Wow, yeah. You actually inspired me to read the article. I thought "LOL, yeah right, AC must've made a typo". But I'll be god damned, the article really says that.
I always thought I was a fairly decent coder, but I might have to re-evaluate if other people can do 1000+ lines of debugged, production quality code every day.
Some of the things shouldn't require detailed programming each day,
because they could have been programmed into a firmware library!
The geometry between the arm, scoop, & the 8 ovens doesn't change,
so that could have been automated.
Instead of coding the whole damn thing
& hoping the signal can get there that day,
they could have told it
Invoke "dump scoop into oven # 1 routine"
and saved the interplanetary bandwidth+delays
for something that required customization...
Also, this business of EVERYTHING waits if one link in the chain gives,
suggests that JIT is the wrong paradigm for this case...
at least slightly.
The life of the machine is known to be finite,
the conditions are extreme in temp & superfine dust,
the thing's been jostled a bit in getting it there,
loss of function-time is costly, isn't it?
Gives a new meaning to // EXEC ASSEMBLY /* // EXEC LNKEDT // EXEC /* /&
START
MAIN BALR 2,0
USING *,2
OPEN PRINT
MVC BUF,HW
PUT PRINT
CLOSE PRINT
EOJ
HW DC CL132'HELLO WORLD'
BUF DS CL132
PRINT DTFPR IOAREA1=BUF,DEVADDR=SYSLST,BLKSIZE=132, *
DEVICE=3203,CONTROL=YES,PRINTOV=YES
END MAIN
now that is EXTREME programing, extreme as... extreme!
At least no confusion about those metric and British units.
The only thing new in this world is the history that you don't know.[Harry Truman]
Why did they use vxworks instead of linux?
I agree. It is not "extreme" to expect a device in space to have stand-by systems in place to withstand radiation. I believe the currently accepted buzzword for this is simply "reliable computing".
The idea is to anticipate failure events, and designing the system to survive them. It is cool... but certainly not extreme.
Support the 30 Hour Work Week!!!
>And they have a lot of interplay between different instruments, so you have to make sure the sequences are not just working, but working together.
:)
I would have some interplay too, but Mass effect isn't out here, yet. Lucky Nasa engineers
Patents Drive Free Software as Hurricanes Drive Construction Industry
about when to really go for a scoop of soil.
2. Only 3 months before it will get too cold and the lander will (probably) die.
3. Martian day, (roughly 24hrs 40mins).
The NASA programmers have been my heroes ever since the hacks they did to Voyager.
I guess after they've finished the programmers will take up something more relaxing (like working for EA).
Andy
...which satellite was that? I mean there are so many orbiting Mars....
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
Google > NASA for directions
Mars is roughly 3715 miles from me, as the deepcrow flies.
Words can have different meanings. Film at 11.
"One day, for example, they'll start work at 9 p.m. to get the code to the Lander in time. The next day, they'll start at 9:30 p.m."
Sounds a bit like my working days...
Exactly, I get a kick out of guys that second guess programmers that are so more advanced than they are that they can only HOPE to aspire to be as good as the guys at NASA.
That and From my experience, less than 10% of all programmers have ever done anything embedded or robotics wise. The rules change when you are writing software for engine management, robots, or space probes, than when you are writing a new consumer toy app or spreadsheet program.
Do not look at laser with remaining good eye.
Debuggers? Hah. When I first got to play with an Orion Instruments logic analyser a few years later it was paradise (at least until I figured out it was a productivity loss (grins)).
Andy
> Engineers successfully resent the code on Thursday.
Why do they have to wait until Thursday to resent it?
A couple of details to clarify:
1. The "code" the folks at the Pheonix SOC are using is called "VML", which is a script language developed by a fellow named Chris Grasso and is similar in some reards to the earlier command language "CDL" from the 70's. They are not doing any programming in C or anything like it, and VML isn't all that sophisticated (it has no array type, for instance). It's designed to do one thing well, and that's control a spacecraft by issuing command messages at specific times.
2. The software on the spacecraft that actually runs everything was written entirely in ANSI C, and it all runs on the VxWorks RTOS on a radiation-hardened PowerPC CPU in a VME card cage. Linux isn't anywhere near the actual spacecraft (so all you Linux fanboys can calm down now). Linux sits on some folk's desks, and it was used by some of the instrument teams in the development phases for file servers, metrics tools and so on. The actual Windriver compilers for the target CPU run under Solaris. Not Linux. Sorry.
3. The challenge facing the operations folks is centered around getting the various instruments to sing and dance together at the correct times. Most of the team members are people with PhD's in planetary science, atmospheric science, geology, optical science, math and so on.
How do I know all this? Well, let's just say that a little part of me is now sitting on Mars.
"Extreme Programming" or "XP" is actually a software development methodology. However, the headline writer seems to have used it in a context which means "This programming is challenging."
Now, this might not seem like a big deal, but please try to remember that this is Slashdot. The publication is targeted at the nerdy sorts who are likely to have knowledge of software development methods ... so please, try to keep these things in mind when writing headlines? I literally thought you meant that Phoenix was programmed and maintained using XP. That would have been an interesting tech article, but it doesn't appear to be anywhere near that in-depth.
FTFA: "'Building the sequences is an extreme programming challenge every single day,' [Robinson] added."
That has literally nothing to do with XP. It's just the one phrase from the article with the biggest "woah, like cool dude!" factor. Give me a fucking break.
It's possible that the engineer was himself referring to the XP method, but even if that was the case, whoever wrote the original article and whoever wrote the Slashdot headline were obviously both clueless about what he was referring to.
$> wget http://somewhere.com/download/phoenix.tar.gz
$> scp phoenix.tar.gz root@phoneix.nasa.com:/root/firmware/
~~ac3bf1