On September 12, NASA announced that the spacecraft Voyager 1, which was launched in 1977, had left the solar system, becoming the first man-made object to do so. Scientists applauded the feat, pointing to its groundbreaking nature. But the achievement also prompted new questions from NASA about whether the mission could be modified to collect more data, the New York Times reported.
As Voyager 1 neared the edge of the solar system, NASA came to the team managing the mission at its Jet Propulsion Laboratory and asked project manager Suzanne R. Dodd if there was any way to gather more information from the boundary-breaking spacecraft, the Times reported. The challenge of doing so was immense, since Voyager’s ’70s era technology – 8-track recorders – didn’t have much space, particularly compared to modern tools. As a result, finding someone who could write code designed specifically for the constraints of the technology was difficult.
“These younger engineers can write a lot of sloppy code, and it doesn’t matter, but here, with very limited capacity, you have to be extremely precise and have a real strategy,” Dodd told the Times.
Eventually, Dodd enlisted retired NASA engineer Lawrence J. Zottarelli to rewrite the code. Voyager 1 was successfully reprogrammed, and new data dumps began arriving in August. The prospect of gathering tangible data about conditions from beyond the solar system has many scientists eager to explore the possibilities.
“This is historic stuff, a bit like the first exploration of Earth, and we had to look at the data very, very carefully,” Edward C. Stone, the top Voyager expert at NASA, who has been on the project since 1972, told the Times. He added, “It’s now the start of a whole new mission.”
Taking a step backward to innovate
The breakthrough, facilitated in part by the innovative, reductive code design, is also notable from a developer’s standpoint, as it points to an issue that is increasingly overlooked in an era in which processing power is cheaper and more accessible than ever before. While many developers may not have such tight constraints on the memory they can use in designing new applications for contemporary hardware, the demands on existing embedded software, such as that of industrial control systems, are changing as well. Many devices that were never designed with the Internet in mind are being brought online, raising new possibilities for their use while also creating new security challenges.
Writing new code for old systems with small memory requires innovative design, which may require close peer collaboration that can be enhanced by code refactoring tools. Programmers can refactor code to make it as simple and efficient as possible – a critical approach when every byte of memory counts. And it’s something that current programmers should be looking to do when they revisit old code, software design expert Jim Bird wrote in a column for DZone.
“Refactoring is done to fill in short-cuts, eliminate duplication and dead code, and to make the design and logic clear,” Bird explained. “To make better and clearer use of the programming language. To take advantage of information that you have now but that the programmer didn’t have then – or that they didn’t take advantage of then.”
Designing old systems to meet new needs or take advantage of new tools isn’t easy, and it may be the case that no amount of re-engineering can accomplish such a goal. But the Voyager 1 project offers a great example of the potential for making continued, innovative use of dated technology through savvy code design.
Software news brought to you by Klocwork Inc., dedicated to helping software developers create better code with every keystroke.