I've found that all of my self directed learning was because of a project. I picked a project I wanted to do and then taught myself the skill to do it.
When I wanted to be a better sysadmin, I forced myself to use desktop Linux back in 1997 when it wasn't nearly as easy as it is now. I had to learn how to compile and configure kernels, how to manage drivers and displays, how to write scrips, a bunch of hardware internals so I could configure them correctly, etc.
But I was driven by the overarching goal of having a usable desktop machine.
You can do the same here. Pick a larger project that accomplishes something you really want to do, and then learn what you need to learn.
You said you have an interest in ML -- build an image classifier off of a camera feed at your front door. Make it identify the mail carrier and your neighbors' cars. Write it in a language you don't know but want to learn. And so on.
Your progress will be tracked by how satisfied you are with the project and if it meets your needs.
Same. Small practical projects are great for that. I wrote my own home lighting system as a way to learn Scala. [1] Getting curious about the big ships going by San Francisco's Fort Mason led to a Twitter bot [2] and a custom protocol parser that drove me to learn all sorts of stuff. [3] Buying a cheap robot vacuum led to me learning man-in-the-middle attacks and IoT protocols. [4] Today I'm busy learning Terraform and Prometheus so I can get my various projects off a single hand-maintained server and into the cloud.
My big tip to people is to pick something that's big enough to be interesting but that you can initially cut back to something pretty small and deployable, then iterate. The ship stuff started out as a visual art piece for a robot chalkboard, but I fell back to the Twitter bot because I had bitten off too much. Having a series of near-term goals makes it very clear which specific thing I need to learn next; otherwise it's easy to drown.
When I wanted to be a better sysadmin, I forced myself to use desktop Linux back in 1997 when it wasn't nearly as easy as it is now. I had to learn how to compile and configure kernels, how to manage drivers and displays, how to write scrips, a bunch of hardware internals so I could configure them correctly, etc.
But I was driven by the overarching goal of having a usable desktop machine.
You can do the same here. Pick a larger project that accomplishes something you really want to do, and then learn what you need to learn.
You said you have an interest in ML -- build an image classifier off of a camera feed at your front door. Make it identify the mail carrier and your neighbors' cars. Write it in a language you don't know but want to learn. And so on.
Your progress will be tracked by how satisfied you are with the project and if it meets your needs.