I built a JavaScript execution visualizer — call stack, heap memory, and event loop in real time