A general topic I'm interested in, with many applications, is the possibility of using OSC or some custom UDP protocol for messages. As such, all the core application needs to do in its run loop is to check for pending packets and process any that have arrived (the rest of receiving could be on another thread).For example, so that you could use essentially any device with rotary knobs or buttons to control things like line width or colour of the selected object or, more generally, anything else.