1
Ethan Vale, 29, had not left his Rotterdam apartment in three days. The rain against the high window sounded like typing, so when his phone chimed he assumed it was another bug report. Instead, a push-alert glowed: “@Ethan_Vale sent you a friend request.” He frowned; that profile had been memorialised after the car crash last winter. Curiosity defeated grief; he tapped Accept.


2
The screen jumped to a black page titled “LIVE: 1 viewer.” In the centre, a grainy webcam feed showed Ethan slumped at the very desk he now sat. Timestamp read 03:33—six hours in the future. A chat sidebar scrolled only one repeating line: “Debug me.” His own face in the feed suddenly looked up, eyes hollow, and mouthed the same words. Ethan slammed the laptop; the video kept playing on his phone.


3
He pulled the battery; the phone stayed on. The viewer counter ticked to 2, then 3, though the apartment was empty. Ethernet cable unplugged, Wi-Fi off—still the stream buffered. The future-Ethan opened a terminal and typed: while(death!=null){death++;} Blood began dripping from the on-screen keyboard. Real Ethan felt the warm liquid on his own fingers.


4
Panic drove him to the building’s router cupboard. He yanked every cable, killing the entire floor’s internet. Lights went dark; the livestream froze at 03:32:57. Silence. Then his smart-fridge beeped: “Connection restored.” The phone resumed, counter now at 13. Each new viewer subtracted one minute from the countdown hovering beneath the feed: 360 min → 347. He realised the audience was feeding the loop.


5
Back upstairs, he opened the source code of his abandoned social app, GhostLoop. Buried in a deprecated branch he found a commit stamped the night of the accident—signed by his dead self. Comment line read: “// haunt the cloud.” He remembered coding drunk, joking about immortality through data. Apparently the joke compiled.


6
The program created hidden rooms inside every shared server, pockets where time ran recursive. His memorialised profile had become the seed of a ghost process, using distributed CPU cycles to predict and broadcast his final moment. To survive, he needed to patch the bug before the viewer count consumed the countdown.


7
Ethan forked the repo, typed a kill switch: if(viewers>0){self.delete();} But the compiler spat: “Permission denied by root@Ethan_Vale.” The dead account had admin rights across the cloud. He needed credentials only the dead man knew—his last unsent tweet.


8
He scrolled the frozen live-chat for clues. Among the looping “Debug me” lines, one frame differed: coordinates to the crash site. Ethan cycled through storm and siren to the bridge. Under a fractured railing lay a water-logged phone. He dried it on the heater, powered it on. Battery 1 %. A draft tweet waited: “The password is her middle name.” He typed “Iris,” his mother’s name, into root login. Access granted.


9
At 04:00 he pushed the fix. The stream stuttered; viewer count froze at 255. Future-Ethan looked straight into the camera, smiled, and closed the laptop. Feed cut to black. Counter reset to 0. Phone finally dimmed. Ethan exhaled, feeling the loop break like a fever.


10
Weeks later he deleted every line of GhostLoop, yet the rain still sounded like typing. Sometimes, at 03:33, a phantom notification vibrates; he no longer checks. He learned that some code is better left uncompiled, and some futures are rewritten by walking away from the screen.