Hi,<p>I sometimes feel overwhelmed by the amount of new things I need to learn. Today it happened again when I tried to understand what happens here (https://github.com/levskaya/jslinux-deobfuscated/blob/master/cpux86-ta.js): http://bellard.org/jslinux/.<p>I sometimes feel that so much knowledge is something that I will never be able to grasp no matter how much I study.
I think I'm a good developer... but this is certainly not something I can do and it makes me feel minuscule.<p>How do I stay on track ?
cpux86-ta.js is an emulator for an x86 CPU. If you learn x86 assembly language and read the x86 reference manual from Intel (which tells you what effect each instruction has on the CPU's state), you too could write one. A basic overview of computer architecture would also be helpful (the author provides some references at the top of the file). It could take a few years to get that knowledge (depending on how much you already know), but not a lifetime. It looks like a lot of code, but that's because the x86 architecture has a lot of machine instructions. But it requires no cutting-edge knowledge of computer science to write or understand, just a lot of patience.<p><i>"I sometimes feel overwhelmed by the amount of new things I need to learn. ... How do I stay on track ?"</i><p>You can't possibly learn everything there is to know. To "stay on track", you need to first define what you want to achieve. It's pretty likely that knowing the x86 instruction set inside out is unnecessary for what you want to achieve. (Which doesn't mean that you shouldn't learn about it, but you need to set your priorities based on what your goals are.)