Dust and Stars - 1992 | Chapter 137 | Gears and Margin | English
5:40 a.m. The alarm never rang. Lin Chen opened his eyes on his own. The numbness in his left foot had already spread to his calf,
Chapter 137: Gears and Margin
5:40 a.m. The alarm never rang. Lin Chen opened his eyes on his own. The numbness in his left foot had already spread to his calf, as if it were wrapped in a layer of soaked burlap. He sat up but did not get out of bed right away. He sat on the edge for ten minutes first, letting the blood slowly flow back. Then he untied the bandage. The edges of the wound had turned pale. There was no pus, but the scab had softened from sweat. He gently swabbed it with a cotton stick dipped in iodine. The sting was faint. The nerve endings seemed to still be on strike. He wrapped it again. Tight. Socks on. Shoes on. He tied the laces high across the top of his foot, avoiding the swollen ankle.
The main room light was off. Wang Guiying's breathing came from the inner room, steady and long. Lin Jianguo coughed once in the yard, probably getting up to use the toilet. Lin Chen made no sound. He picked up his canvas bag and checked it once: ID card, receipt slip, half a piece of dry ration, water bottle. The ledger was in the inner compartment. He pushed the door open. Morning fog spread low over the bluestone path. The air smelled of wet earth and dew.
6:10. The first county-rural bus. There were only three early-rising farmers in the carriage, headed to market. He sat by the window in the last row. His left foot hung in the air; he did not dare plant it firmly on the floor. Moisture had condensed on the window glass. He wiped a slit clear with one finger. Looked at the road outside. From village road to provincial road. From dirt track to asphalt. The scenery moved backward. Time moved forward. In his head he calculated: two hours and ten minutes by bus. Fifteen minutes on foot. He had to be at the window by 7:55. Late once, five yuan deducted. Late three times, contract voided. He could not afford to lose.
7:50. The employment agency hall. A dozen or so people were already lined up. The air was stifling. The ceiling fan squeaked overhead, stirring but unable to move the stagnant heat. He went to Window Three. Handed over the receipt slip and his ID card. The middle-aged woman checked them, then gave him a work badge and a key. “Zone B, fourth row. Computer startup password is 123456. There’s an operating manual on the desktop. Today you start with the test database. If your typo rate goes over 3 percent, five yuan deducted. Go on.”
He nodded. Took the badge. The edge of the plastic bit at his hand.
Zone B was a long open room. Twenty computers. The screens glowed with a dim bluish light. Keyboard clatter had already blended into a single sheet of sound, like dense raindrops hammering a tin roof. He found the fourth row. Sat down. Powered on. Entered the password. Two folders popped up on the desktop: Source Data. Input Template.
He double-clicked Source Data. TXT format. Densely packed text. Customer name, phone number, address, invoice number, amount. Full-width and half-width characters mixed together. Spaces, line breaks, and garbled text grew everywhere like weeds. He opened the template. An Excel spreadsheet. The fields were already laid out. He took a deep breath. Set both hands on the keyboard.
8:00 sharp. Work began.
The first hour. His fingers leaped across the keys. He did not look at the screen. He looked only at the source data. In his mind he cleaned it in advance. Remove spaces. Convert to half-width. Skip invalid lines. Fill the corresponding cells. Enter. Next row. The rhythm was steady. But the old computer responded with a delay. After he hit Enter, the cursor lagged for half a second before jumping to the next cell. He had to adapt to that delay. He could not get ahead of the beat. If he did, he would drop characters.
The third hour. His left foot began to swell. The space inside the shoe tightened. His toes curled inside the sock. He adjusted his posture and shifted his weight onto his right hip. His left hand kept typing. His right hand reached for the cup of water now and then. The water had already gone cool. He took a sip. Wet his throat. Kept going. The cursor on the screen was like a dull knife, slicing time one cut at a time. He did not think about the pain. He focused only on accuracy. One mistake, five yuan deducted. Minus bus fare, and today would be for nothing.
12:00 noon. The loudspeaker came on. “Forty-minute break. Cafeteria is on the second floor. Miss it and you miss it.”
He stopped. Saved the file. Closed Excel. Stood up. When his left foot touched the floor, his knee buckled slightly. He caught the edge of the desk. Waited for the wave of soreness and numbness to pass. Only then did he slowly make his way to the stairs.
The cafeteria was self-serve. Two meat dishes, one vegetable. Rice all you could eat. He took half a portion of braised pork, one portion of stir-fried greens, and a bowl of soup. Sat in the corner. Ate slowly. The meat was salty. The oil was heavy. But the calories were real. He calculated intake against expenditure. Forty yuan for the day. One lunch included. The money saved could buy iodine and gauze. If the foot injury did not get worse, the cycle could keep turning. He finished eating, washed his bowl and chopsticks clean, and put them back in the return area. He did not linger one extra minute.
1:40 p.m. Back at his station. Continued.
The data load was huge. The source file had 5,000 records. At a speed of 400 records an hour, he would be working until 6:00 p.m. He did not dare stop. Blisters had formed on his fingers. The web between thumb and index finger was sore. Every forty minutes, he stood up and loosened his wrists. His left foot stayed suspended the whole time. Or he lightly tapped the floor with his toes, keeping the blood circulating.
4:00. A prompt box popped up in the lower right corner of the screen. “Today’s progress: 2800/5000.” He glanced at it. Kept going.
5:50. The last two hundred records. He slowed down. Checked every character. The amount field could not be wrong. The decimal point could not be missed. One mistake, five yuan deducted. He could not afford to lose.
6:00 sharp. Save. Backup. Submit.
A settlement slip popped onto the screen: Input volume 3120 records. Typo rate 1.8%. Qualification rate: Passed. Tomorrow’s payout: 40 yuan.
He leaned back in the chair and closed his eyes. His breathing was heavy. Sweat ran down from his temples and soaked his collar. He did not stand up right away. Only after his heartbeat steadied did he slowly rise. His left foot had gone completely numb now. Like a wooden stick. He braced himself against the wall and edged out of the hall one step at a time.
The bus back was more crowded. The after-work crowd surged into the carriage. He stood in the back corner by the rear door, gripping the handrail, canvas bag pressed to his chest. Streetlights came on one by one outside the window. The city was entering night. His body was overdrawn, but his mind was clear. He was reviewing the day’s process. The cleaning rules for source data could be standardized. The template format could be preset. If he could write a script—automatically read the TXT, use regular expressions to match and clean, output CSV, then import into Excel—efficiency could increase tenfold.
7:40. Arrived at the stop. Fifteen minutes’ walk back to the village.
8:00. County library. Old computer section. The lights were dim. Only three machines were on. He went to the one in the farthest corner, sat down, and started it up. The system was old. Windows 98. No internet. Only a few electronic tutorials and programming manuals stored on the local hard drive. He opened “Python Basics.” TXT format. Plain text. No highlighting. No auto-complete.
He opened his notebook. Inside were syntax notes copied out by hand. Variables. Lists. Dictionaries. Loops. File reading and writing. With the screen in front of him for reference, he began typing code.
import os
file_path = "C:\data\source.txt"
f = open(file_path, "r")
lines = f.readlines()
f.close()
He typed very slowly. Every character had to be checked. Indentation had to be exact. Four spaces. No more. No less. When he finished, he saved it as clean.py. Double-clicked to run.
A black command-line window popped up. Error.
SyntaxError: invalid syntax
He stared at the screen. Checked line by line. Line three. The quotation marks were Chinese full-width marks. He deleted them. Replaced them with English half-width quotes. Saved again. Ran it.
Another error.
IndentationError: unexpected indent
He checked the indentation. Found an extra space on line five. Deleted it. Ran it.
The window flickered once. No output. No error either. The program terminated silently.
He opened the output folder. There was an output.csv inside. He double-clicked it open. Garbled text.
Encoding problem. The TXT was in GBK. Python was reading it as ASCII by default. He had to write it another way. Or use the codecs module. He opened the manual and searched for codecs. It was not in his handwritten notes. He had no choice but to start from the beginning. Read line by line. Understand the logic. Then rewrite the code.
import codecs
f = codecs.open(file_path, "r", "gbk")
...
9:40. He had revised it seven times. Finally. The command-line window printed: Processed 5000 lines. He opened the output file. The data was neat. Fields aligned. No garbling.
He leaned back in the chair and let out a long breath. The screen’s light reflected on his face. His eyes were dry, but there was no smile at the corner of his mouth. Only calm. He closed the file. Cleared the cache. Shut the machine down.
When he stepped out of the library, the night wind was cool. He walked slowly back to the village. His steps were heavy. His left foot felt filled with lead. Every stride had to be dragged forward by his right leg.
When he got home, the main room light was still on. Xiaoman had fallen asleep on the table. A drawing book lay open, showing an old-fashioned computer, with lots of stars drawn inside the screen. Wang Guiying was in the inner room mending clothes. Hearing his footsteps, she looked up. “You’re back?”
“Mm.” He put down his bag, went to the water jar, and ladled out some water. Washed his face. Washed his foot. Unwrapped the bandage. The wound edges were red and swollen. There was more seepage than in the morning. He disinfected it with iodine and wrapped it again. His movements were light. He did not want to wake anyone.
He sat at the table and opened the ledger.
Date: August 6. Expenses: bus fare 5 yuan. Iodine 0.8 yuan. Gauze 0.5 yuan. Income: 0 (settled tomorrow). Balance: -1.3 yuan (advanced against tomorrow). Foot injury: swelling worsened. Sensation not recovered. Progress: script V1.0 runs. Time spent 2 hours. Processed 5000 records.
He paused with the pen in his hand, looking at the negative number. Tomorrow he would receive forty yuan. That would fill the hole. But the script was only the first step. Real data had dirty entries. Blank lines. Broken lines. Amounts with thousand separators. The script had to handle those exceptions. Otherwise it would crash halfway through. He needed exception handling. He needed regular expressions. He needed to wrap the cleaning logic into functions.
He closed the ledger. Blew out the lamp. Darkness fell. The pain in his left foot sharpened in the depth of night, like a fine needle pricking the nerve again and again. He closed his eyes. In his mind, code was still running. try...except. Exception handling. Regular expressions. Matching numbers. Filtering out non-numeric characters.
Tomorrow. 8:00 a.m. Check in. Nighttime. Library. Script V2.0. Exception handling.
The road was still long. But the gears had already engaged. The margin was shrinking. Time waited for no one.
The wind outside the window stopped. Far away, a dog barked twice.
He closed his eyes. His heartbeat was steady.
Tomorrow. Eight o’clock. Keyboard. Code. Exception handling.
The road was still long. But every step landed on solid ground.
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