“Frankly, I’m very worried,” he says. Ever since mid-November, the Voyager 1 spacecraft has been sending messages back to Earth that don’t make any sense. It’s as if the aging spacecraft has suffered some kind of stroke that’s interfering with its ability to speak. “It basically stopped talking to us in a coherent manner,” says Suzanne Dodd of NASA’s Jet Propulsion Laboratory, who has been the project manager for the Voyager interstellar mission since 2010. “It’s a serious problem.”
Instead of sending messages home in binary code, Voyager 1 is now just sending back alternating 1s and 0s. Dodd’s team has tried the usual tricks to reset things — with no luck. It looks like there’s a problem with the onboard computer that takes data and packages it up to send back home. All of this computer technology is primitive compared to, say, the key fob that unlocks your car, says Dodd. “The button you press to open the door of your car, that has more compute power than the Voyager spacecrafts do,” she says. “It’s remarkable that they keep flying, and that they’ve flown for 46-plus years.”
Voyager 1 and its twin, Voyager 2, have outlasted many of those who designed and built them. So to try to fix Voyager 1’s current woes, the dozen or so people on Dodd’s team have had to pore over yellowed documents and old mimeographs. “They’re doing a lot of work to try and get into the heads of the original developers and figure out why they designed something the way they did and what we could possibly try that might give us some answers to what’s going wrong with the spacecraft,” says Dodd. She says that they do have a list of possible fixes. As time goes on, they’ll likely start sending commands to Voyager 1 that are more bold and risky. “The things that we will do going forward are probably more challenging in the sense that you can’t tell exactly if it’s going to execute correctly — or if you’re going to maybe do something you didn’t want to do, inadvertently,” says Dodd.
Linda Spilker, who serves as the Voyager mission’s project scientist at NASA’s Jet Propulsion Laboratory, says that when she comes to work she sees “all of these circuit diagrams up on the wall with sticky notes attached. And these people are just having a great time trying to troubleshoot, you know, the 60’s and 70’s technology.” “I’m cautiously optimistic,” she says. “There’s a lot of creativity there.”
Still, this is a painstaking process that could take weeks, or even months. Voyager 1 is so distant, it takes almost a whole day for a signal to travel out there, and then a whole day for its response to return. “We’ll keep trying,” says Dodd, “and it won’t be quick.”
Comment: This is one hell of an adventure for NASA coders and engineers. I envy them. Years before the launch of Voyager 1, I was introduced to computers in an after school course in the computer center of Fairfield University. I ended up writing a Star Trek navigation game in Fortran by graphing polynomial functions. I wouldn’t know where to begin to do that now. Many years later I learned how to hack MS DOS to write stupid computer tricks and write simple viruses. That was all to support a cover. I couldn’t do that today, either. Those rudimentary old skills are nothing to sneeze at. Those NASA coders are living the dream… a techno-nerd dream, but a dream nevertheless.
TTG
I asked chatGPT to recreate your space navigation game for you…
prompt: create space navigation game in Fortran by graphing polynomial functions.
PROGRAM SpaceNavigation
IMPLICIT NONE
INTEGER :: choice
REAL :: x
CHARACTER(LEN=50) :: equation
! Title
PRINT *, “Welcome to Space Navigation!”
DO
! Main Menu
PRINT *, “Main Menu:”
PRINT *, “1. Navigate”
PRINT *, “2. Exit”
PRINT *, “Enter your choice:”
READ(*, *) choice
SELECT CASE (choice)
CASE (1)
CALL Navigate()
CASE (2)
PRINT *, “Exiting the game. Goodbye!”
EXIT
CASE DEFAULT
PRINT *, “Invalid choice. Please select again.”
END SELECT
END DO
CONTAINS
SUBROUTINE Navigate()
REAL :: coeff(0:10)
INTEGER :: degree, i
REAL :: y
PRINT *, “Enter the degree of the polynomial equation ( 10) THEN
PRINT *, “Degree too high. Please enter a degree <= 10."
RETURN
END IF
PRINT *, "Enter the coefficients of the polynomial equation:"
DO i = 0, degree
PRINT *, "Coefficient of x^", i, ":"
READ(*, *) coeff(i)
END DO
PRINT *, "Enter the x value for which you want to calculate y:"
READ(*, *) x
y = EvaluatePolynomial(coeff, degree, x)
PRINT *, "The y value corresponding to x =", x, "is", y
END SUBROUTINE Navigate
FUNCTION EvaluatePolynomial(coeff, degree, x)
REAL, INTENT(IN) :: coeff(:)
INTEGER, INTENT(IN) :: degree
REAL, INTENT(IN) :: x
REAL :: EvaluatePolynomial
INTEGER :: i
REAL :: result
result = 0.0
DO i = 0, degree
result = result + coeff(i) * x**i
END DO
EvaluatePolynomial = result
END FUNCTION EvaluatePolynomial
END PROGRAM SpaceNavigation
MJ,
Cool. Try that with graphing parabolic quadratic equations. It’s been over 50 years, but I now remember I used parabolas.
A parabola is a special case of a polynomial – it’s a polynomial of degree 2.
Who was V’Ger?
https://youtu.be/kHUZCVl28lg?si=-glRBYL97-bk5jhy
You asked and chatGPT delivered. Does it work? Compiles? Don’t have a Fortran emulator to test. Other code requests to chatGPT ( java, python) usually execute without issue.
program SpaceNavigation
implicit none
! Parameters
integer, parameter :: num_curves = 3
integer, parameter :: num_points = 100
real, parameter :: gravity = 9.81
! Variables
real :: x_ship, y_ship ! Spaceship coordinates
real :: x_target, y_target ! Target coordinates
real :: x_obstacle(num_curves, num_points), y_obstacle(num_curves, num_points) ! Obstacle coordinates
real :: a(num_curves), b(num_curves), c(num_curves) ! Coefficients of parabolic curves
integer :: i, j ! Loop counters
! Initialize obstacles (parabolic curves)
do i = 1, num_curves
a(i) = 0.01 * i
b(i) = 0.5 * i
c(i) = -10.0 * i
do j = 1, num_points
x_obstacle(i, j) = real(j) / real(num_points) * 100.0
y_obstacle(i, j) = a(i) * x_obstacle(i, j)**2 + b(i) * x_obstacle(i, j) + c(i)
end do
end do
! Initialize spaceship and target coordinates
x_ship = 0.0
y_ship = 0.0
x_target = 100.0
y_target = 0.0
! Main loop
do
! Print current state
call printState(x_ship, y_ship, x_target, y_target, num_curves, num_points, x_obstacle, y_obstacle)
! Check if the spaceship has reached the target
if (abs(x_ship – x_target) < 1.0) then
print *, "Congratulations! You've reached the target!"
exit
end if
! Move the spaceship
call moveSpaceship(x_ship, y_ship, x_target, y_target, num_curves, num_points, x_obstacle, y_obstacle)
end do
contains
! Subroutine to print the current state
subroutine printState(x_ship, y_ship, x_target, y_target, num_curves, num_points, x_obstacle, y_obstacle)
real, intent(in) :: x_ship, y_ship, x_target, y_target
integer, intent(in) :: num_curves, num_points
real, intent(in) :: x_obstacle(num_curves, num_points), y_obstacle(num_curves, num_points)
integer :: i
! Clear screen
print *, char(27)//"[2J"
! Print spaceship and target
print *, "Spaceship: (", x_ship, ",", y_ship, ")"
print *, "Target: (", x_target, ",", y_target, ")"
! Print obstacles
do i = 1, num_curves
print *, "Obstacle ", i, ":"
print *, " Coefficients: a =", a(i), ", b =", b(i), ", c =", c(i)
end do
end subroutine printState
! Subroutine to move the spaceship
subroutine moveSpaceship(x_ship, y_ship, x_target, y_target, num_curves, num_points, x_obstacle, y_obstacle)
real, intent(inout) :: x_ship, y_ship, x_target, y_target
integer, intent(in) :: num_curves, num_points
real, intent(in) :: x_obstacle(num_curves, num_points), y_obstacle(num_curves, num_points)
integer :: i, nearest_curve
real :: dist, min_dist
! Find the nearest obstacle curve
min_dist = 1.0E20
nearest_curve = 0
do i = 1, num_curves
dist = sqrt((x_ship – x_obstacle(i, 1))**2 + (y_ship – y_obstacle(i, 1))**2)
if (dist 50.0) then
y_ship = y_ship – 0.1
end if
! Slow down spaceship if it goes too low
if (y_ship < -50.0) then
y_ship = y_ship + 0.1
end if
end subroutine moveSpaceship
end program SpaceNavigation
MJ,
I wouldn’t know if it works. This stuff is so far behind me, I wouldn’t know where to begin. But I can see how this ChatGPT function can be a real help to coders. It could at least offer a possible solution to a particular problem. The coder can either use it as is, modify it or use it to spur his own creative process if he hits a wall. Using coding libraries of functions is a regular part of the process so using ChatGPT can fulfill the same function.
TTG – You are correct, great benefit if your a novice, stuck, or you programing skills are lacking (like mine). I just used simple prompts to get those results. Prompt Engineering is the art of asking GPT (or any LLM) to get the results you want.
Someone read Walrus’s comment on the true purpose of the Gaza pier.
Elsewhere I read that the pier was Netanyahu’s idea which makes perfect sense.
US building Gaza port to facilitate mass ‘voluntary’ migration: Anadolu Agency.
The US claims the port is to facilitate humanitarian aid but could be used to ethnically cleanse Gaza per previously leaked Israeli plans.
https://thecradle.co/articles-id/23838
F&L,
José Andrés and his WCK cooks are building a temporary pier to receive 200 tons of food. I doubt he’s doing it for any other purpose than to get food to the people. He’s doing it with supplies and equipment already in Gaza. UAE is assisting in this whole effort. Maybe a pier is the best way to do this given that supply trucks are not working out so well due to security hinderances and a lack of drivers.
I remember as a kid in the very early 80’s seeing a middle age man with a thick stack of dot matrix printed out code going through it line by line in a McDonald’s.
Later I got a taste of it in a jr. high computer class and thought of that man going through code. Awful. No way I would be doing this stuff for a living.
It reminded me of those old circuit board box toys from Radio Shack where you connect l 85 wires to get a siren sound. Painstaking work for one sound. I imagine these Viking folks are doing something very similar.
babelthuap,
I remember the wide fanfold computer printouts with the alternating light green and white lines. That’s what the WWMCCS terminal at Fort Devens used. At RPI, the electrical engineering students were using punch cards, far worse than that fanfold paper. I was lucky. That high school class used the old florescent green on black CRT screens. Even now, when I use a terminal screen, I switch it to that green on black format.
It is painstaking work, but there are plenty of coders who get real thrill out of this.
Back in the early 80s as an undergrad, I once watched a bunch of kids slicing up the list of everyone who had been admitted to the college (sorted by date) and then resorting them by hand into alphabetical order so they could be typed into the student database like that.
I didn’t even say anything, and I’m still kinda proud that I didn’t say what I was thinking…
Some progress reported in fixing the Voyager glitch.
https://universemagazine.com/en/saving-voyager-1-interstellar-probe-shows-signs-of-recovery/
There are several cool space news bits on this site, btw.
It’s not dead yet!!
Talking nonsense? Worried friends? Alternating 1s and 0s? All the signs are there. I think Voyager 1’s distressed condition has been misdiagnosed. The spacecraft has simply decided to identify as non-binary. NASA engineers should consider sending out a maintenance craft with an upgrade; one of those new fangled bit-fluid quantum computers.
But seriously, I dabbled with Fortran at college (I didn’t inhale) and can see the attraction of the challenge to fix the thing. Best of luck to the techno-nerds.
what a relief. I’d feared it degraded to the level of a rambling train wreck loser running for office.