Cool post! One little tidbit to this:
> Now just to warn you: regular expressions in programming were once based on this automata theory, but have since been made much more powerful. Regex can describe much more than just regular languages.
Rust's `regex` crate is actually limited to regular languages. In particular, it uses both NFAs and DFAs to do matching in linear time!
I look forward to seeing more automata work done in Rust. :-)