What writing a tiny bytecode VM taught me about debugging long-running programs