Short one: learning is fun and satisfying and discoveries often come by guesswork
TL;DR version
This site, starting with the Leftris game and the paint program, was sort of my pet project. I am not a programmer. I work as a translator and a project manager for a living and the last time I wrote a line of code prior to 2021 was back in 94 or 95 when we took a short dive in the programming language Turbo Pascal in high school Computer Science 101.
Slow forward a decade or so and a thought started occasionally to itch in my head: why don't I try to create the Tetris game, for fun. Because if I recall correctly I might have managed to do it back then in high school. Not sure whether it was just making the blocks move down the screen or was it a complete game with all its necessary functionalities but anyway the thought of this challenge was always somewhere there, like embers hidden under the ashes.
Anyway, life goes on, with traffic signs and stuff moving hastily by the side window, with idling on the couch or trying too hard at work, the usual. Then one starry night, when I was taking our cats (yes, cats, not dogs) for the evening round to sniff around the parking lot I was scrolling through a blog post by Derek Sivers and either he must have a compelling way of delivering his thoughts (the "Avoid the shortcuts" hit homerun particularly, probably beacause it is also a solid guideline for life in general, sort of a milder version of the "If it doesn't suck, we don't do it" motto by David Goggins) or was it just the stars but anyway I got turned on the idea to learn JavaScript, starting from scratch. What's the shame in trying something new? So in 2021, at 45, I enrolled into online beginner courses for HTML, CSS and JS.
After that it was a couple of months when I spent each evening some half hour to progress through the courses. Loved it all the way! Such enjoyment to allow yourself to carry the feeling of the beginner's mind all the time and having minor a-ha moments one after the other, each night. So then when I got through the basics of arrays, objects, methods and the lot it was time to tackle the challenge. Tetris, here I come, full blast. Ehm, wait, wait, wait... maybe not so fast. How do you draw a square in HTML/JS? Actually, how do you draw at all in HTML? OK, back to square one it was. So much for planning it out and being all organized.
Well, this is actually why I look at it as at some sort of guesswork. The whole process of progress is just muddling through everything that appears to stand in your way and needs to be muddled through in order for you to move on, to grow. Nowadays the modus operandi for the situation I found myself in is obvious: if you do not know something, look it up on the internet and learn from other people's experiences and examples (man, I remember looking up information in books back in the 90s and actually often finding it. No way I'd know how to go this way today!!). So then I learned of this thing called canvas and how to draw rectangles, and fill them with colour. Wait, if I can draw rectangles, why wouldn't I try to draw some circles or lines? Wait, wait, why not add a menu to the screen where you can select what you want to draw. Or select colours. How do you implement the Undo functionality on the drawing board? So instead of Tetris I got severely sidetracked into trying to produce a rudimentary drawing program, but it was all pure enjoyment since, after all, what else is life but constant learning?
After this, a break was due (too intensive for the mind and we also got a new child). But after a couple of months it was learning mode again: continue through the JS course and finally start with the thing that started it all a couple of months ago (or a couple of decades ago, depending on how you look at it).
So after one week, when I managed to finish the game, the monkey in my head goes ehm, why don't you try and make the game go in the opposite direction, or actually left or right (an idea from a friend of mine that he had (and had implemented) way then back in high school ... which was probably the inception of it all for me). Or, why don't you add the option to define the playing field size or the possibility to have random playing field orientation changes. The unending stream of ideas wanting to be implemented kept coming in a sort of organic progression, and what could I do but oblige. During it all I also learned the usefulness of keeping versions, so you can compare your day's work to yesterdays and backtrack in case you screwed up or simply revel to be looking at a reasonably solid solution to your problem (for which you worked hard). Anyway ...
Both programs are probably full of flaws and sure need refactoring and all that, but hey, it was all just for learning, for enjoyment, there wasn't ever an aim or a goal here. All the while it was most probably simply my mind being hungry and having a need to be fumbling around. The journey was really nice and satisfying, along the entire way (although I'll admit I am blessed to have a very patient partner because the way was long and demanding). If you yourself have an itch that is regularly reminding you of its presence, give it a smile and a high five and let it be a companion in your learning.