Stuffing bytes through a faux serial port with rate limiting, or mangling the result into text? Those actually bother me less; they're kinda ugly, but in my mind they don't compare to cutting through all the nice abstractions and shoving raw bytes down a hardware port on a running Linux system.