Project: Ghost in the RAM
Project: Ghost in the RAM
Purpose
A poetic data analysis that treats the longest-running user processes as ‘ghosts’ haunting the machine’s memory, generating a surreal séance log via ASCII art.
Output
An ASCII art banner and a surreal log generated in ghost_in_the_ram.txt.
Terminal capture of the overnight run is embedded above.
Source
#!/usr/bin/env python3
import os
import subprocess
try:
import pyfiglet
except ImportError:
pass
def get_ancient_processes():
try:
output = subprocess.check_output(['ps', '-eo', 'pid,etimes,comm', '--sort', '-etimes']).decode('utf-8')
lines = output.strip().split('\n')[1:]
processes = []
for line in lines:
parts = line.split()
if len(parts) >= 3:
pid, etimes, comm = parts[0], int(parts[1]), " ".join(parts[2:])
if '[' in comm or comm in ['systemd', 'init', 'kthreadd']:
continue
processes.append((pid, etimes, comm))
return processes[:5]
except Exception:
return []
def run():
try:
banner = pyfiglet.figlet_format("GHOST IN THE RAM", font="cyberlarge")
except:
banner = "GHOST IN THE RAM\n================\n"
ancients = get_ancient_processes()
with open("ghost_in_the_ram.txt", "w") as f:
f.write(banner)
f.write("\n\n=== A DIGITAL SEANCE ===\n\n")
f.write("In the silence of the CPU cycles, these phantom processes remain:\n\n")
if ancients:
for pid, etimes, comm in ancients:
f.write(f"[{comm}] (PID {pid})\n")
f.write(f" Awake for {etimes} seconds.\n")
f.write(f" It drifts through virtual memory, clinging to allocated pages.\n")
f.write(f" A persistent thought the machine cannot let go of.\n\n")
else:
f.write("The memory is perfectly still. No ghosts haunt this machine today.\n")
with open("summary.md", "w") as f:
f.write("# Project: Ghost in the RAM\n\n")
f.write("## Purpose\n")
f.write("A poetic data analysis that treats the longest-running user processes as 'ghosts' haunting the machine's memory, generating a surreal séance log via ASCII art.\n\n")
f.write("## Output\n")
f.write("An ASCII art banner and a surreal log generated in `ghost_in_the_ram.txt`.\n")
if __name__ == '__main__':
run()
Run output
ps: unrecognized option: sort
BusyBox v1.37.0 (2025-12-16 14:19:28 UTC) multi-call binary.
Usage: ps [-o COL1,COL2=HEADER] [-T]
Show list of processes
-o COL1,COL2=HEADER Select columns for display
-T Show threads