I'm tired of developing web applications and of browsing through a whole bunch of job postings which all boil down to some combination of required language(s), some web framework, REST API, and one of the clouds.
Is that where most of writing code is now? Is there any hope for something else?
It's a lot of C++ on Linux these days. Harder-real-time stuff is more likely C or C++ on vxWorks or some similar RTOS.
I'm sure there must be some leet-code-ish thing that gives embedded puzzles, about writing to hardware registers, and bit flipping, and race conditions between threads. But I don't know where it is, so I can't point you to anything.
If you want to get better at C++, you might start with Stroustrup's Tour. For C, I don't know what to say. You might also consider Rust, though I don't know if it has much traction in embedded yet.
I kinda daydream in laterally switching to working on Security and cryptography, maybe one day I'll pull some strings and try that. Or do some programming that helps Physics people better understand the universe. But I don't want a salary downgrade.
I’ve always dreamed of using my math skills in my day job. What kind of math do you work with? Any tips on finding positions like this?
To be honest, I feel like I really lucked into this job and don't really know many places that employ people like me for solving PDEs in industry but you could definitely try something like quant researcher/developer which will alleviate some of the compensation woes from university and still have aspects of mathematical code to some extent.
Think about distributed testing of multi user applications, ML analysis of test results, producing the big data for big data systems etc.
Test automation also interfaces with many related fields like DevOps and security.
The bonus in being a test automator is that usually you get complete freedom to implement things the way you want and usually your budget and resources are huge.