arduivis - a bi-directional communication paradigm for programming languages & microcontrollers