Programming Interactivity: A Designer's Guide to Processing, Arduino, and openFrameworks