Lightly Cooked / Thoughts on Learning

Anna and I relaxed some today.
For lunch Anna lightly cooked some carrots, potatoes, and Kohlrabi. Then she put some herbs on them and fried them in a pan. I fried two pieces of salmon after soaking up the moisture with paper towels.
It was good.
In the evening Anna filled three Topaz apples with some kind of cream cheese cinnamon raisin stuffing and baked them in the oven.
Between the meals I played around with the SDL library in C++. I coded up a little thing where a rectangle bounced off the edges of a small window. If you press the left arrow button, the velocity on the x-axis is flipped. Press down and you do the same for the y-axis. Press the A-Button and Anna’s face appears. Press R to get back to the bouncing rectangles. So basically I was trying to have a main loop, intercept input, draw graphics on the screen, and keep track of the state (showing Anna’s face or bouncing rectangle). There’s no real collision detection of any sort. So that will be something to figure out next time I get to play around with SDL.
It’s interesting how my method of learning a new technology has changed after working one and a half year as a software developer. Not only do I now have a better grasp of programming concepts like scope, object declaration and definition, flow control, etc; but I also have a better intuition and understanding of why things are laid out as they are when I start working with a library that is alien to me.
The thing I used to do when learning some new language or framework or whatever, that I now consider not ideal, is looking for tutorials or guides on that new thing, and then following it very closely, never going on a tangent, or trying to cram a lot of information into my head as if programming consisted of a bunch of facts, when it’s really a way of thinking about abstract concepts. The best way to internalize those concepts, in my opinion, is to play with them, build things with them, ideally in a state of playfulness, curiosity, and wonder. Like a child playing with a box of Legos, which will make her understand a lot of things about the physical world and motor skill, you have to try out things and figure out why they don’t work, and then build on that, until thinking about the structures and patterns in programming turns into something akin to natural instinct.
I hope that’s what I did today. I set myself small goals and tried to achieve them while keeping a copy of the SDL documentation at hand. Those goals went something like this: open and close a window; open a window and close it when a button is pressed; draw a bmp file; draw a bitmap file over another bitmap file; draw a bitmap file over another bitmap file, but in a different location than the origin; etc.
I didn’t strictly follow a tutorial, which made the whole thing more playful, and thus emotionally charged and better anchored in my memory.
I’ve always found the hardest thing when starting out with a new craft to be finding a goal that’s achievable but still challenging, thus stimulating and flow inducing. Seems like a hard problem to generalize and solve.
Seems like an interesting and worthwhile problem to solve.