Dust and Stars - 1992 | Chapter 180 | Parallel Lines | English
At six in the morning, the alarm never rang. Lin Chen was already awake. During the night, the numbness in the sole of his foot ha
Chapter 180: Parallel Lines
At six in the morning, the alarm never rang. Lin Chen was already awake.
During the night, the numbness in the sole of his foot had settled into a dull, leaden weight. He tried shifting his balance onto his left foot, and a stabbing pain shot up from his Achilles tendon into his calf. He drew it back at once and braced himself on the bed with his right hand, sitting up slowly. No groan, no wasted motion—just the routine sequence of pulling on his socks and slipping into his shoes. He tied the laces tight on the right shoe; on the left, he only looped them twice, leaving room for the swelling. Opening the drawer, he took out the iodine swab he had prepared the night before, disinfected his left ankle again, and covered it with breathable tape. His movements were practiced, as if he were completing a standard procedure.
He checked his backpack: USB drive, ID card, student ID, algorithm report, half a bottle of mineral water, one pack of compressed biscuits. The USB drive held preprocess_v3.py. He unplugged his computer, and in the instant before the screen went dark, it reflected the bruised shadows beneath his eyes. Balance: 7,135.30 yuan. He silently recited the route for the day: old north campus computer lab for identity verification at 8:00 → hand in exam by 12:20 → Metro Line 4, transfer to Line 2 → Building B, Provincial Institute of Technology Experimental Building for 13:30 sign-in. The total margin for error could not exceed ten minutes. He zipped his backpack shut; the sound of the metal teeth closing was soft.
At 7:20, he walked out through the school gate. The early-autumn mist had not yet lifted, and the pavement was slick. He avoided the stairs and went down the accessible ramp instead. His right foot struck the ground heavily; his left dragged slightly, his pace deliberately slowed. There were not many people on the bus. He sat in the last row with the printed exam rules spread across his knees. Outside the window, the streets slid backward like stretched film. He closed his eyes and ran through the script’s logic in his head: read CSV → clean null values → replace rare characters → output TXT. The old machines had only 2GB of memory. pandas would never run on them. He would have to use Python’s native csv module and process the file line by line. If it froze midway, the fallback plan was to manually skip the problem rows and catch the errors with try-except. He did not need a miracle. He needed fault tolerance.
At exactly eight, he arrived at the old campus. The red-brick teaching building was peeling, and half the ivy on the walls had already withered. Seven or eight examinees were waiting outside the third-floor computer lab, speaking in low voices. The invigilator stood with a roster, checking names one by one. Lin Chen handed over his documents. The teacher glanced at his slight limp, asked nothing, and only pointed him toward a machine in the third row by the window.
He sat down. Powered on. The fan gave off a muffled roar, like an old tractor. The Windows XP startup screen spun for a full minute. He plugged in the USB drive and opened the Python 2.7 environment. The path configuration was correct. He double-clicked the script, and the terminal window popped up. The first log line appeared:
[INFO] Starting to read source data...
At nine, the invigilator distributed the problem files. Eight thousand mixed data entries: garbled characters, missing fields, duplicate rows. The required output was a cleaned, structured text file. The allotted time was two hours.
But he had to finish by 12:20.
He pressed Enter. The script began to run. Inside the black terminal, the progress bar crawled upward inch by inch. CPU usage spiked immediately to 98 percent, and the fan whirred furiously. He stared at the screen, fingers hovering above the keyboard. Line 1240: error.
UnicodeDecodeError
An encoding conflict involving uncommon characters. He had expected it. Without hesitation, he switched to the fallback logic, manually edited the replacement dictionary, forced gbk into utf-8, and skipped any characters that still could not be parsed. He restarted the script. It continued.
By 11:10, it was just past halfway done. His left foot had begun to cramp. He clenched his back teeth and shifted all his weight onto the right foot, pressing his knee against the desk to spread the strain. Sweat slid from his temples and dripped onto the edge of the keyboard. He did not wipe it away. All his attention was fixed on the scrolling terminal log.
[INFO] Cleaning complete 4120/8000
[INFO] Processing duplicates...
He glanced at the wall clock. The second hand seemed to move painfully slowly. He adjusted his breathing until the rhythm in his fingertips matched the rhythm of the pain. No speeding up. No panic. Just keep watching the next line of output.
At 11:45, the terminal finally displayed:
[SUCCESS] Output file generated. Time elapsed: 58m 12s.
Faster than expected. He opened the output file at once and spot-checked the first and last fifty lines. The format aligned, there were no garbled characters, and all fields were intact. He pressed Ctrl+S, dragged the file into the submission directory, and clicked Upload. The progress bar filled. The system prompt appeared:
Submission successful.
Time: 11:52. Twenty-eight minutes remained before the deadline. He shut the computer, pulled out the USB drive, and rose from his seat. A sharp burst of pain stabbed through his left foot. He gripped the edge of the desk, waited three seconds, then forced himself to walk out of the computer lab. The invigilator looked up at him, said nothing, and looked back down.
The corridor was empty. He quickened his pace, but his gait had already warped. Going downstairs, he had to turn sideways and cling to the railing, moving down one step at a time. Outside the teaching building, the early-autumn sunlight was harsh. He checked his phone: 12:05. The first train on Metro Line 4 had just gone. The next one would be in eight minutes. Standing at the edge of the platform, he drew in a deep breath. The cold air filled his lungs and pressed down the tightness in his chest.
The train pulled in. He squeezed into the carriage and caught hold of a handrail. His phone lit up with a WeChat message from Professor Zhou: “Have you arrived?”
He replied: “On the way. I’ll be there before 13:15.”
The subway shot through the tunnels underground, and the lights stretched into broken lines across the window. He closed his eyes, and the switch in his mind flipped—from data cleaning to technical interview. Sliding window boundary conditions, routes for tracing memory leaks, the logic behind architectural tradeoffs. He pulled the algorithm report from his backpack and skimmed the core parameters once more. He was not nervous. He was calibrating. Like debugging code before deployment, every variable had to be put back in place. He knew that in real life, none of the available choices were perfect. But the one who made the choice had to bear the consequences. He was already bearing them.
At 13:08, he reached Building B of the Provincial Institute of Technology Experimental Building. The glass curtain wall reflected a harsh blaze of daylight. He swiped open the side door and took the elevator straight to the third floor. The hallway was carpeted in pale gray, swallowing up footsteps. A sign outside Room 302 read: Technical Preliminary Screening Interview. The door stood slightly ajar, and low voices drifted out from inside.
He paused outside to straighten his shirt collar. There was an ink stain on his cuff from revising code the night before; he covered it with a pen cap. His left foot had already gone numb, held up only by muscle memory. He checked the time: 13:12.
The door opened. A man in a gray suit stepped out holding a folder. His gaze swept over Lin Chen and paused on the slight limp in his stance; one eyebrow shifted almost imperceptibly, then his expression returned to neutral.
“Lin Chen?”
“Yes.”
“Come in. Director Li is waiting for you.”
He stepped over the threshold. The room was not large. Two people sat across the long conference table. The man in the central seat looked to be around forty, his hair combed with meticulous neatness. Lin Chen’s algorithm report lay open in front of him. Beside it sat an open laptop, its screen glowing with a digital whiteboard interface.
“Sit.” Director Li did not look up. He tapped the tabletop with a finger. “You handed in your practical exam twenty-eight minutes early. On that batch of old-campus machines, your script didn’t trigger CPU throttling?”
Lin Chen pulled out a chair and sat down. His right foot touched the floor steadily; his left hovered. “I used native libraries and avoided memory spikes. Exception handling was downgraded for graceful failure.”
Director Li finally looked up, his eyes sharp. “And what does graceful failure mean?”
“It means that when compute resources are limited, you guarantee the core data isn’t lost first, and mark peripheral data to be skipped. Not perfect—usable.”
The room fell silent for two seconds. Director Li closed the folder and leaned forward slightly. “Good. Then let’s look at the code directly. In the distributed cache design described in your report, if a node goes down, how do you guarantee data consistency?”
Lin Chen did not answer at once. He reached into his bag, took out a notebook, opened to a blank page, and uncapped his pen. The nib scratched lightly across the paper as he drew a simple topology diagram, marking the primary and replica nodes and the heartbeat detection lines.
“There are two cases,” he said, his voice even. “If it’s a brief network fluctuation, you rely on retry mechanisms and idempotency as safeguards. If it’s a physical node failure, you depend on write-ahead logs and asynchronous replication. But in the real world, there is no absolute consistency—only eventual consistency. The tradeoff depends on the delay threshold the business can tolerate.”
Director Li stared at the diagram on the page, tapping the tabletop softly. Once. Twice.
“What threshold?”
“That depends on the business.” Lin Chen raised his eyes. “For payments, milliseconds. For log cleaning, seconds or even minutes are acceptable. In my project, I set it at five seconds. If it exceeds five seconds, it degrades to local cache so the service doesn’t crash.”
Director Li said nothing. He turned to glance at the technical supervisor beside him. The supervisor gave a faint nod.
“Go on,” Director Li said. “Run your script once. On this machine.”
Lin Chen inserted the USB drive. The terminal window popped up again. Familiar black background, green cursor blinking. He typed the first command. The fan started up.
The glow from the screen fell across his face. The pain in the sole of his foot had receded somewhere very far away, like rain heard through glass. He knew this was not an exam. It was another survival test. He could not afford to fail, and he did not need perfection. He only had to prove that, in an environment starved of resources, he could still get the job done.
The progress bar began to crawl upward. Director Li’s gaze fixed on the screen and did not move.
Lin Chen’s fingers hovered over the Enter key. Waiting.
Then suddenly, a line of red text flashed in the terminal:
MemoryError: Unable to allocate array with shape (8000, 12) and data type float64
Memory overflow. The old machine’s 2GB of RAM had been swallowed by system processes. Python’s array allocation had failed.
Director Li’s brow furrowed, and his tapping finger stopped. Beside him, the technical supervisor had already picked up his pen, ready to record the termination time.
Lin Chen did not move. He stared at the error message as the notebook of past mistakes in his mind flipped open on its own. He knew this sort of environment mismatch too well. He did not remove the USB drive, and he offered no explanation. Instead, he quickly typed import gc; gc.collect() into the terminal, forcing the release of idle objects. Then, without pause, he rewrote the data-loading logic from one-time bulk loading into chunked iteration, splitting the input stream with chunksize=500. Three lines of code. Enter.
The roar of the fan dropped abruptly. The progress bar began moving again.
Director Li watched the screen without speaking. He only leaned back slightly in his chair.
More from WayDigital
Continue through other published articles from the same publisher.
Comments
0 public responses
All visitors can read comments. Sign in to join the discussion.
Log in to comment