When I was growing up, there are only two activities that I found engrossing: sports and playing computer games. I played baseball but was mostly terrible at it. Everything else I did regularly was endurance sports: mountain biking, running, and triathlons. My best friend and his brother got me into computers games such as A-train, SimCity, Transport Tycoon, Civilization, which probably was an early sign that I was a builder and entrepreneur.
My early experiences with flow were probably typical of many kids. When I look back, I'm disappointed I never discovered learning based flow activities. When I went to college in 1996, it was the first time I used the internet regularly. It was college and access to the Internet which gave me the tools to develop my intellectual interests.
As an adult, I've spent most of my working life and free time in pursuit of engrossing learning activities which produce flow. The best way for me to remember and incorporate information is with visual representations of those concepts. To illustrate here's Csikszentmihalyi's flow model:
Visual models are a tool, so when do I deploy it? When I'm struggling to focus, bored, or frustrated. If I'm able to step back and look at what's going on in the situation, I start to see that somethings missing from the situation.
If it's too hard, I need to go back to the basics and focus on foundational knowledge first. Such as reading in-depth explanations of how something works as I did with threading in python.
If I'm frustrated, it usually means I need to take a break and come back to the problem later.
If I'm bored, maybe I need to see if I can automate a task or learn how to do it more efficiently. For me, I finally got tired wrangling the formatting of my code. I decided to just switch my projects to the black auto-formatting library in Python. I decide I wanted to be productive rather than have it my way.
My ability to learn certainly has limits, but my body will probably wear out before I ever get close to my limits.