The sole reason I was interested in comp sci is because of the movie Matrix. I think I watched the first part over 50 times in my life. In my cadet college days, I used to spend hours theory crafting with Imran about the nature of Matrix and fantasizing about what would happen if we were all in a simulation.
I was fascinated by Neo, the protagonist. He was a god inside the Matrix. Like Superman but plausible. You could believe that this Superman exists.
SPOILER ALERT. TURN BACK AND WATCH THE MATRIX IF YOU HAVEN’T DONE SO.
What changed when Neo came back from death at the end of the first movie? What made him able to bend the rules of that universe?
My theory is, that by going through certain motions (the cycle of life), he fully understood the system. For him, there were questions about the world that remained unanswered because he was afraid to explore the unknown. But through some difficult process(death), he understood the laws of nature, and that made him a master of the system. That’s it. He was not a special human or anything. He just had an elevated understanding of the universe he was in than the rest.
What does it take to make a god?
In the programming world, some people are demigods, who can do extremely difficult things with ease. For people like me, this is nothing short of magic because I see the effect but I have no idea what made it possible. Examples like people who do homebrew OS’s(eg Atmosphere, PSX), write graphics APIs for fun (wgpu, vulkano), build open source databases (postgres, redis), or write software for sending probes to the outer ring of the solar system.
I can’t build such products. And it’s frustrating to not have the ability to appreciate the work even if I am unable to build it myself.
How do we gain clarity about computing? I wish I could read Knuth’s books but they are not for me. Not yet.
So here’s an outline of resources that I think would be useful to get me started on this journey.
- A Programmers Introduction to Mathematics - Jeremy Kun
- Structure and Interpretation of Computer Programs - Sussman and Abelson
- Algorithms - Sedgewick
- Rust Book - (need it because haven’t worked with a systems programming language yet)
- Rust Discovery Book - Embedded 101
- Rust Embedded Book - Embedded 201
That’s it. Don’t need fifty books. These six books are enough to create and appreciate a wide variety of difficult programs. The next step is just writing one of them.