It's a holiday in the US today, so we're taking a trip into the past for a haunting classic about how things used to be. Original. -- Remy
Greg never thought he’d meet a real-life mentat.
“We’re so happy to have you aboard,” said Jordan, the CEO of IniTech. She showed Greg to the back end of the office, to a closed door marked with just one word: Frank. Jordan, not bothering to knock, opening the door.
Greg was overwhelmed with the stench of burned coffee and old-man smell. The office was unadorned and dark, the blinds drawn, illuminated by the blue light coming from an aging CRT screen. He saw a wrinkled scalp behind a tall, black office chair.
“I’m busy,” Frank said.
Jordan cleared her throat. “This is your new programming partner.”
“I’m Greg. It’s nice to meet you–” Greg offered his hand, but a wrinkled appendage slapped it away.
“Get yourself a chair. I know where everything is. You just show me you can type.”
Greg shot Jordan a glance as they left Frank’s office.
“He’s been with us 22 years,” she said. “He knows everything about our code. But his typing’s not what it used to be. Just do what he says. With some luck he’ll be retiring in a few months.”
Total Recall
Greg pulled a spare office chair into Frank’s den. He could see Frank’s face in profile now, resembling the mummy of Rameses II. Frank slid his keyboard to Greg. “Open C:\project.make
in Vim,” Frank said, “and go to line 22.”
Greg thought it was odd that a makefile would right under C:\
, but he did so. He moved the cursor to line 22.
“Increment $VERSION
to 8.3.3
.”
Greg noticed that Frank had his eyes shut, but humored him. In fact, line 22 did declare a $VERSION
constant, and Greg changed it to 8.3.3
.
“You’ll be suitable,” Frank said, crossing his arms. “You’ll do your work from the SMB server. Don’t make any changes without my authorization first.”
Change Management
Back at his desk, Greg found the SMB server where Frank kept all of his code. Or rather, the SMB mapped all of the files on Frank’s hard drive. Curious, Greg searched for .pas
, .make
, and other source files, wondering why Frank would keep his principle makefile under C:\
.
There were 440 source files, about 200 megabytes, spread out all over the directory strucure. C:\Windows\System32
, C:\Users\Shared\Project
, C:\Program Files\
… Frank’s entire computer was the de facto source repository.
Greg knew if he ever had to make an on-the-fly change to the source, it would take hours just tracking down the right file on SMB. Surely they had a repository he could check changes into. Greg took a deep breath and re-entered Frank’s den.
“Frank, do we have any of this in a repo somewhere? I don’t want to SMB onto your computer every time we make a change. What if we have to patch something overnight?”
“What?!” Frank rose from his office chair, unsteady on his disused legs. “There will be no code changes without my direct supervision! It’s worked just fine for 22 years. Is that understood?”
In Memory
Greg endured this for several months. Frank would harbor no suggestions of version control or repos. Everything, Frank said, was in his head. As long as no one changed the source without his permission, he would know where everything was.
Despite his frustrations, it greatly impressed Greg. Especially when Frank had memorized loop variables such as these:
for RecursiveWaypointCompressionThreadModuleIndexVerifierPropertyHandleIndex := 1 to 99 do ...
Less amusing was Frank’s insistence on using HEX constants for any encoded string. “You can’t trust any string encoding,” Frank said. It even extended to embedded web pages in their embedded manual:
const
ThirdWebPage : array of byte = [ $2d, $20, ... 660k OF HEX CONSTS..... ];
JQuery33WebPage : array of byte = [ $2d, $20, ... 3,660k OF HEX CONSTS..... ];
But Greg wondered. What would happen if he slipped in just a little change? How long would it take before Frank found out?
One night, he came into the office and logged into Frank’s SMB server. He opened a file and found an innocuous for-loop block. He replaced the twenty-something variable name with i
, saved a backup on his own machine, and went home.
Greg arrived in the office late that morning, stuck in traffic, and was met by Jordan at the door. “Keep this quiet, but Frank just passed away.”
“Was it last night?”
“Brain aneurysm in his sleep.”
Frank probably died before he had a chance to see Greg’s unauthorized change. Greg would never know if Frank actually had the entire codebase memorized. Sometimes Greg would memorize a line or two, or find himself looking up mnemonic tricks to remember long sequences of characters. But it wasn’t like Frank rubbed off on him. Not really.