Venkat leaned in again. “This one says ‘Point here for yes’.”
“All right, I see what he’s going for,” said Bruce.
“There’s the third note,” said Tim.
“‘Point here for no,’” Venkat read. “‘Will check often for answer’”
Venkat folded his arms. “All right. We have communication with Mark. Tim, point the camera at ‘Yes’. Then, start taking pictures at 10 minute intervals until he puts another question up.”
LOG ENTRY: SOL 97 (2)
“Yes!” They said “Yes!”
I haven’t been this excited about a “yes” since prom night!
Ok, calm down.
I have limited paper to work with. These cards were intended to label batches of samples. I have about 50 cards. I can use both sides, and if it comes down to it, I can re-use them by scratching out the old question.
The Sharpie I’m using will last much longer than the cards, so ink isn’t a problem. But I have to do all my writing in the Hab. I don’t know what kind of hallucinogenic crap that ink is made of, but I’m pretty sure it would boil off in 1/90 thof an atmosphere.
I’m using old parts of the antenna array to hold the cards up. There’s a certain irony in that.
We’ll need to talk faster than yes/no questions every half-hour. The camera can rotate 360 degrees, and I have plenty of antenna parts. Time to make an alphabet. But I can’t just use the letters A through Z. With my Question Card, that would be 27 cards around the lander. Each one would only get 13 degrees of arc. Even if JPL points the camera perfectly, there’s a good chance I won’t know which letter they meant.
So I’ll have to use ASCII. That’s how computers manage characters. Each character has a numerical code between 0 and 255. Values between 0 and 255 can be expressed as 2 hexadecimal digits. By giving me pairs of hex digits, they can send any character they like, including numbers, punctuation, etc.
How do I know which values go with which characters? Because Johanssen’s laptop is a wealth of information. I knew she’d have an ASCII table in there somewhere. All computer geeks do.
So I’ll make cards for 0 through 9, and A through F. That makes 16 cards to place around the camera, plus the Question Card. 17 cards means over 21 degrees each. Much easier to deal with.
Time to get to work!
Spell with ASCII. Numbers 0-F at 21 degree increments. Will watch camera starting 11:00 my time. When message done, return to this position. Wait 20 minutes after completion to take picture (So I can write and post reply). Repeat process at top of every hour.
S…T…A…T…U…S
No physical problems. All Hab components functional. Eating 3/4 rations. Successfully growing crops in Hab with cultivated soil. Note: Situation not Ares 3 crew’s fault. Bad luck.
H…O…W…A…L…I…V…E
Impaled by antenna fragment. Knocked out by decompression. Landed face down, blood sealed hole. Woke up after crew left. Bio-monitor computer destroyed by puncture. Crew had reason to think me dead. Not their fault.
C…R…O…P…S…?
Long story. Extreme Botany. Have 126 m 2 farmland growing potatoes. Will extend food supply, but not enough to last until Ares 4 landing. Modified rover for long distance travel, plan to drive to Ares 4.
W…E…S…A…W…-…S…A…T…L…I…T…E
Government watching me with satellites? Need tinfoil hat! Also need faster way to communicate. Speak&Spell taking all damn day. Any ideas?
B…R…I…N…G…S…J…R…N…R…O…U…T
Sojourner rover brought out, placed 1 meter due north of Lander. If you can contact it, I can draw hex numbers on the wheels and you can send me six bytes at a time.
S…J…R…N…R…N…O…T…R…S…P…N…D
Damn. Any other ideas? Need faster communication.
W…O…R…K…I…N…G…O…N…I…T
Earth is about to set. Resume 08:00 my time tomorrow morning. Tell family I’m fine. Give crew my best. Tell Commander Lewis disco sucks.
“I was up all night,” said Venkat. “Forgive me if I’m a little punchy. Who are you again?”
“Jack Trevor,” said the thin, pale man before Venkat. “I work in software engineering.”
“What can I do for you?”
“We have an idea for communication.”
“I’m all ears.”
“We’ve been looking through the old Pathfinder software. We got duplicate computers up and running for testing. Same computers they used to find a problem that almost killed the original mission. Real interesting story, actually, turns out there was a priority inversion in Sojourner’s thread management and-”
“Focus, Jack,” interrupted Venkat.
“Right. Well, the thing is, Pathfinder has an OS update process. So we can change the software to anything we want.”
“Ok, how does this help us?”
“Pathfinder has two communication systems. One to talk to us, the other to talk to Sojourner. We can change the second system to broadcast on the Ares-3 rover frequency. And we can have it pretend to be the beacon signal from the Hab.”
“You can get Pathfinder talking to Mark’s rover?”
“It’s the only option. The Hab’s radio is dead. Thing is, all the rover does is triangulate the signal to fix its location. It doesn’t send data back to the Hab. It just has a voice channel for the astronauts to talk to each other.”
“So,” Venkat said, “You can get Pathfinder talking to the rover, but you can’t get the rover talking back.”
“Right. What we want is for our text to show up on the rover screen, and whatever Watney types to be sent back to us. That requires a change to the rover’s software.”
“And we can’t do that,” Venkat concluded. “Because we can’t talk to the rover.”
“Not directly,” Jack said. “But we can send data to Watney, and have him enter it in to the rover.”
“How much data are we talking about?”
“I have guys working on the rover software right now. The patch file will be 20 Meg, minimum. We can send one byte to Watney every 4 seconds or so with the ‘Speak&Spell.’ It’d take three years of constant broadcasting to get that patch across. So that’s no good.”
“But you’re talking to me, so you have a solution, right?” Venkat probed.
“Of course!” Jack beamed. “Software engineers are sneaky bastards when it comes to data management.”
“Enlighten me,” said Venkat, patiently.
“Here’s the clever part,” Jack said, conspiratorially. “The rover currently parses the signal into bytes, then identifies the specific sequence the Hab sends. That way, natural radio waves won’t throw off the homing. If the bytes aren’t right, the rover ignores them.”
“Ok, so what?”
“It means there’s a spot in the codebase where it’s got the parsed bytes. We can insert a tiny bit of code, just 20 instructions, to write the parsed bytes to a log file before checking their validity.”
“This sounds promising…” Venkat said.
“It is!” Jack said excitedly. “First, we update Pathfinder with our replacement OS. Then, we tell Watney exactly how to hack the rover software to add those 20 instructions. Then we broadcast the rover’s patch to Pathfinder, which re-broadcasts it to the rover. The rover logs the bytes to a file. Finally, Watney launches the file as an executable and it patches the rover software!”
Venkat furrowed his brow, taking in far more information than his sleep-deprived mind wanted to accept.
“Um,” Jack said. “You’re not cheering or dancing.”
“So we just need to send Watney those 20 instructions?” Venkat asked.
“That, and how to edit the files. And where to insert the instructions in the files.”
“Just like that?”
Читать дальше