Specialized Interfaces
TODO: There was also a cool physical interface for the JR employees’ computers.
In a way, it’s very helpful that we’ve standardized the ways we interact with computers: a keyboard and a mouse. Now: touch.01 Imagine the nightmare of designing software with no standard input methods.
But at some point I began to fantasize about specialized hardware interfaces. Keyboard / mouse / touch are universal, so they’re always good, but maybe not always perfect. What if you could build your own hardware interface? This should be a dial, this a knob, this a button. For applications you use a lot, it could make using it more fun, productive, or ergonomic.
TODO: there was a project I recall from years ago with modular hardware
A project I’ve been wanting to do since like 2018 is to repurpose a MIDI controller as an interface to training machine learning models, using knobs to control learning rate and hyperparameters. It’s sort of a terrible idea at this point: huge training time, reproducibility, and our better understanding of learning methods w.r.t optimizers and normalization (i.e., a huge pile of gradient hacks). But it reflected a true need at that point, which may still be present: iterating quickly on building small models was a pain because the loop was super un-ergonomic:
- run a script
- try to see what was happening
- fiddle with hyperparameters
- re-run the script, starting fully over
There’s an opportunity to improve the interface, especially when you’re in experimentation mode and want to learn what works quickly through many small experiments before you want to start “the training run.”
Footnotes
There are still minor variants like different keyboard layouts, trackpads, and gamepads for games. And there’s always the eccentrics who use foot pedals for emacs. ↩︎