Wednesday, April 14, 2021

I am not a believer in trying to learn two things at once.

 I just spent this week learning to program with OpenGL in Python using the fabulous PyOpenGL.  I was barely able to do it.  I have written a whole textbook on computer graphics and it derives the OpenGL matrix stack and the viewing model conceptually.  The OpenGL graphics pipeline model, if I recall accurately, I was also barely able to learn!  I think there is a zero percent chance I could learn the ins and outs of calls to and behavior of PyOpenGL and the underlying conceptual model.

One reason I am pretty sure of that is that I once tried learning TensorFlow, Python, and neural nets.  It did not go well.  Once I was comfortable with Python and kind of understood neural nets, I tried again (about a year later) with PyTorch.  It was not pretty.  Finally, I implemented a neural net in C, then one in Python, from scratch.  It was painful, but I made it.  Barely.  (And thanks to some advice from Shalini Gupta, Rajesh Sharma, and Hector Lee).  Then used PyTorch and  managed to train a network from scratch.   Again, barely.

My empirical experience is that it takes a focused and concerted to learn anything really new.   And if it were any harder, I don't think I could do it.  And if I am trying to learn two things at once (particularly an API and the concepts/algorithms that the API is abstracting for me) then forget it.

Conclusion: I should never try to learn two things at once.  If you have trouble with that, break it down.  It may seem like it takes longer, but nothing is longer than never learning it!

Corollary:  when you see somebody quickly picking up packages and wondering why you don't, maybe you are just like me, or maybe they are really something special.  Either way, if you develop competence in a technical area, you are in the most fortunate 0.1% of humans, and take a bow.  You need to find a way that works for you.

12 comments:

insominx said...

Thank you for sharing Pete. Stuff like this really helps us remember our humanity and that even people with deep knowledge have similar struggles to the rest of us. It's easy to want to glamorize what the superheroes of our industry can do.

Rupesh Mandke said...

Can totally related to this when I started learning Vulkan with RTX! Coming from OGL, Vulkan was definitely new for me (it's very different!) and I had never written a ray tracer before, although had production experience coding for Arnold & Renderman. I divided the problem by first learning Ray tracing basics (CPU based) via your books, then started learning Vulkan (still WIP). Once I get enough conceptual idea about Vulkan model, then I will shift to RTX + Vulkan. It's taking time and testing the patience, but hopefully will make things far more clearer.

James David said...

I have seen your blog you are talking about OpenGL and phyton so tell me more information about phyton in detail because I want to learn phyton. author by online embroidery

TOOD MILLER said...

Pete shirleys your graphic blog is outstanding. Really appreciate it digitizing services would be much better with such graphics.

Unknown said...

Grateful for this post. As others said, "A true master always carries a humble heart". Today I know it deeply.

Jesús said...

I was a TA last year for an undergrad class (at Texas A&M Visualization department) that was using Python and PyOpenGL. I think most of students didn't learn, they were just second year students and not even engineering students, and they were just learning Python. I think is good to start with something simple like making games with Sprites using pyglet or arcade. Also if you ever want to look back at using OpenGL in Python maybe moderngl package would be better or pyglet v2.0+ (I'll try that one this semester)

salot my life said...

บริการเกมสล็อตออนไลน์ปี 2022 เกมให้เลือกเล่นมากกว่า 1,000 เกม สล็อตpg เว็บตรงไม่ผ่านเอเย่นต์2022สล็อตเล่นผ่านเว็บ ก็ได้เช่นกัน สมัครเล่น SLOT สล็อตออนไลน์ superslot.li*

salot my life said...

บริการเกมสล็อตออนไลน์ปี 2022 เกมให้เลือกเล่นมากกว่า 1,000 เกม 20รับ100 เมก้า เล่นได้จริง แจกจริง สมัครเลยตอนนี้

salot my life said...

บริการเกมสล็อตออนไลน์ปี 2022 เกมให้เลือกเล่นมากกว่า 1,000 เกมคืนยอดเสีย10% สล็อตออนไลน์ ซุปเปอร์สล็อต ซุปเปอร์สล็อต78

Anonymous said...

Thanks for sharing this amazing article, It is a very informative post good work keep it up best courier service.

Megri Embroidery Digitizing

newtechlife said...

thanks for sharing this good blogs top5updates thanks for posting

Hart Williams said...

Tackling OpenGL and Python is quite the feat—impressive, especially with your textbook background! Should you explore digital art or simulations, professional digitizing services could be a valuable asset.