Chapter Forty-Six

Start from the beginning
                                    

They think the task is impossible.

I press both palms against the sides of my head and squeeze, squeeze, squeeze, until an idea pops forth.

I start in a rush, "Prisha, what happens when the simulator rejects a botlet's output?"

She shrinks from my vigor. "It—well, it throws an error. The thread is terminated."

"Did you try catching the error?"

When software fails, it generally fails by throwing errors—which the offending code can then catch, decipher, and recover from if it has sufficient logic to do so.

Prisha explains she and Kevin, a junior engineer, poured over the error messages from the simulator. "They simply say Not in allowable range—they don't even say too high or too low. There's no guidance whatsoever."

"Right, but have you tried swallowing the error and resubmitting the same values?"

"If the values are the same, surely the simulator—"

"Yeah, yeah—it'll reject, I just want to understand if we're allowed do-overs."

Paul, following our exchange, has already added a TRY-CATCH block to the code, and now executes the same simulation. His machine spins for a while, that sort of lurching inactivity that makes you worry you broke something. A deflated look is just starting around the group when output comes back.

Run time: 21.7s. Botlets deployed: 6000. End-to-end successes: 73. Max consecutive successes: 3.

Jared grunts. The vital statistics are the same: 6000 botlets deployed, seventy-three end-to-end successes, and a max consecutive successes of three.

That run time, though, ballooned. With stubborn hope, I dive into the logfile. It confirms that our top botlets—although they only succeeded three times, hit the simulator just over 800 times. Every botlet did.

"Do-overs," I say, smiling.

"Super," Jared says with the enthusiasm of pita bread. "Now instead of six thousand errors, we're making six-hundred thousand."

I have an instinct to say a snarky thing about his attitude or multiplication skills, but swallow it. I can tell Prisha is thinking the same thing, after all, and putting Jared in his place will only mire us in negativity.

"Do-overs give us space to tinker," I say. "Now our botlets just need to use that space, to get a little smarter."

Paul and I split up the granular log files and dig in, ascertaining that each botlet gets 1.3 seconds before the simulator decides it's taking too long to produce an acceptable value and rejects.

Next, we go about building the better botlet. Working through lunch, dive-bombing Elite's sumptuous spread when the rumbling of our stomachs becomes too distracting, we try a range of algorithms. We teach botlets to talk to each other; we give them adaptive strategies that evolve with every failure; we try pure logic and heuristics and hybrids of the two.

By four p.m., with roughly ten hours left in Blackquest 40, the best any botlet achieves is seventy-nine consecutive successes: a giant improvement over five, but far from infinity.

Prisha wheels back in her chair to peek up the hall—Elite facilitators have been hovering around my workspace, keeping tabs on our progress.

"They can't test perpetuity," she whispers. "What's the longest they will run the simulation for, once the forty hours has ended?"

I glance to Paul. "What do you think? I doubt they'll be sticking around for brunch."

"Maybe ten minutes," Paul says. "Fifteen?"

Blackquest 40Where stories live. Discover now