doit [0] is a superb toolkit for building task-oriented tools with dependencies. It isn't too complex to get started and gives you a lot to work with. I've used it for an internal tool used by everyone in the company for 5+ years and it has never given me a headache.
Scripting flow manipulations in mitmproxy is easy. There are a lot of great examples to learn from which help. The filter syntax is expressive and simplifies writing code to mangle flows. I've done body conversion [0], weird types of authorization testing, manipulated system update packages on the fly, all sorts of bizarre things. Auto-reloading scripts on change is such a time saver. If you want a python-based programmable HTTPS proxy for testing I have not found anything better.
I used the BeagleBone Black. There is a loadable kernel module which, lucky for me, just worked. The kernel module is from the USBiquitous project [1].
See my other comment about recommending starting with usb-tools / Facedancer.
"USB in a Nutshell" [1] was really useful to me. As far as tooling goes I'd take a look at the "usb-tools" project [2] on Github. The GreatFET One hardware [3] is good and works with the Facedancer software hosted by the usb-tools project.
I enjoyed working on USBQ and learned a lot by doing it but the kernel loadable module it depends on wasn't written by me and probably needs some love. The usb-tools project and the related hardware has advanced quickly. Were I to do the same project over again (hacking Zwift for fun) I'd probably start there.
There is so much to USB... even some surprising things! [4]
Crazy example of how fast typst is: 30”x30” document with 2600 tiny images generates a 40MB PDF in under a half second.
Check typst out. It’s amazing. Not quite latex equivalent in some ways but moving fast on an amazing foundation.