The importance of Fundamentals and applied knowledge!

Last year I read Kobe Bryant’s The Mamba Mentality. It gave me a little insight on his outlandish work ethic and his way to tackle challenges. It was a great read, most of his teachings transcend Basketball, one that stuck with me the most was how much he valued the fundamentals of the game, he realized that building blocks like footwork and spacing were being disregarded by other players, and how those fundamentals gave him an advantage over them.

This made me ask myself, what are the fundamentals that every Graphics Programmer should have, regardless of the specialization within the field they want to pursue?

After lurking for a while in the Graphics subreddit and twitter, I selected my first fundamental to master: Linear Algebra, now, I had to choose how to learn it; there’s a wide variety of 3D math books out there, but two caught my eye, the first one, caught it by merely aesthetic reasons:

My pick while superficial, was lucky, the book was great, the authors use a laid back and comprehensive approach to the topics; I focused in the first 10 chapters:

As I was serious about this endeavor, I made a point of doing it with structure, I used Anki and made sure to study several times per week for several hours each session:

This was the first time I used flashcards to learn anything, and I made a lot of mistakes, I often ended up entering incomplete questions or trying to stuff too much information into a single card. After some months of practice, you start asking yourself: Can I explain it easier? Can I divide this info into smaller chunks? answering these questions made the process slightly more bearable… only slightly; on more days than I’d like to admit, I had to force myself to sit and study.

Even with a learning structure and a good book, things were not easy, specially in some chapters, (like the Polar Coordinate Systems) I questioned myself, why the heck am I doing this? This is bullshit, it’s not being useful at all…

Around that time, some colleagues complained that some transformations were not working as expected in a vector graphics library, and that’s when 2 things clicked on my mind:

  1. The hard work I poured into studying was actually paying off! I was able to easily explain why the transformations were actually right, and my colleagues were interpreting them wrongly (They were erroneously interpreting the coordinate system conventions by assuming that the positive Y coordinates pointed up in the screen, while in reality they pointed down, and forgot to notice that the selected vector convention were column vectors).
  2. The process of studying was hard because I was not applying it immediately. yeah, I was learning the topics, solving some of the exercises… but I never took the time to actually code the concepts and play with them using a Graphics API.

Finishing the book was a bittersweet feeling, I was glad I was able to power through it… but I was also certain my approach had been poor and narrow-minded.

I’ll now introduce the second book:

This one got my attention for 3 main reasons: first, the book’s author is straight to the point, no filler, no nonsense, second, a bunch of people on the Graphics twitter recommended it, including two engineers that I admire, and third, it includes code snippets!

And now, full of scars caused by powering mindlessly through the first book, I’ll start my journey on this one. Given that I am also learning Vulkan and SideFX’s Houdini, I’ll make a point of not only creating flash cards, but actually applying those concepts on both, Vulkan code and Houdini’s VEX language. I’ll certainly add some posts if I run into interesting things!

Leave a comment

Your email address will not be published. Required fields are marked *