<story><title>Putting the “You” in CPU</title><url>https://cpu.land/</url></story><parent_chain><item><author>archmaster</author><text>Hi! I&amp;#x27;m the person who made this thing!&lt;p&gt;Thanks for reading and thanks for all the corrections, in glorious Hacker News fashion. It&amp;#x27;s definitely a pleasant surprise to see my project here. Putting the &amp;quot;You&amp;quot; in CPU is still &lt;i&gt;very much&lt;/i&gt; a work in progress — I was hoping to polish it a lot more and even add some more content before posting on HN later next week :)&lt;p&gt;Some backstory on me: I&amp;#x27;m 17 and left high school a year ago to work full-time at Hack Club (&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;hackclub.com&amp;#x2F;&quot; rel=&quot;nofollow noreferrer&quot;&gt;https:&amp;#x2F;&amp;#x2F;hackclub.com&amp;#x2F;&lt;/a&gt;). I&amp;#x27;ve been programming for as long as I can remember, and started homeschooling about 6 years ago to focus more on that (and my other interests).&lt;p&gt;Since I&amp;#x27;m entirely self-taught, I &lt;i&gt;haven&amp;#x27;t&lt;/i&gt; taken any college systems classes — and while I had picked up a lot, I wasn&amp;#x27;t happy with my answer to &amp;quot;what happens when you run a thing.&amp;quot; So I let myself spend a shit ton of time actually learning as much as possible. What I found was that:&lt;p&gt;1. Operating systems and hardware are really fun to learn about!&lt;p&gt;2. Wow, online resources on this stuff are terrible.&lt;p&gt;A decent portion of my research ended up at PDFs of lecture slides from 2014, or StackOverflow answers that were, in fact, incorrect or vastly oversimplified.&lt;p&gt;So, I wrote Putting the &amp;quot;You&amp;quot; in CPU to hopefully provide a better resource to people who wanted to start teaching themselves all this stuff! While I don&amp;#x27;t provide perfect coverage (still need to write a couple paragraphs on SMP), it&amp;#x27;s a lot better than most of what I&amp;#x27;ve seen. I also had fun drawing and making diagrams for the first time, I think I definitely got progressively better and I&amp;#x27;m really proud of some of the drawings in the latter few chapters.&lt;p&gt;P.S. The whole thing is open source on GitHub if you want to look under the hood: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;hackclub&amp;#x2F;putting-the-you-in-cpu&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;hackclub&amp;#x2F;putting-the-you-in-cpu&lt;/a&gt;</text></item></parent_chain><comment><author>gary_0</author><text>&amp;gt; Wow, online resources on this stuff are terrible.&lt;p&gt;I&amp;#x27;ve been thinking this a lot lately, searching for things like: a detailed block diagram of the Linux kernel, how page tables work, a comparison of function call ABIs on different platforms, details about low-level network protocols, reserved Linux PID numbers, etc.&lt;p&gt;Occasionally I would find a Reddit thread with an answer, but it was mixed in with the usual Reddit dross, and I doubt that Reddit is a reliable place to store knowledge. StackOverflow was particularly unhelpful, as the questions are mostly oriented around accomplishing particular tasks, and the answers are necessarily brief.&lt;p&gt;Nowadays, for general knowledge, I skip Google&amp;#x27;s enshittified search and go straight to Wikipedia, but Wikipedia has limits on how much detail it will go into about technical topics.&lt;p&gt;I wonder if there&amp;#x27;s a need for a comprehensive wiki for all the details of computer guts? There are lots of scattered resources, but having them all compiled in one place would be awesome.</text></comment>
<story><title>Putting the “You” in CPU</title><url>https://cpu.land/</url></story><parent_chain><item><author>archmaster</author><text>Hi! I&amp;#x27;m the person who made this thing!&lt;p&gt;Thanks for reading and thanks for all the corrections, in glorious Hacker News fashion. It&amp;#x27;s definitely a pleasant surprise to see my project here. Putting the &amp;quot;You&amp;quot; in CPU is still &lt;i&gt;very much&lt;/i&gt; a work in progress — I was hoping to polish it a lot more and even add some more content before posting on HN later next week :)&lt;p&gt;Some backstory on me: I&amp;#x27;m 17 and left high school a year ago to work full-time at Hack Club (&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;hackclub.com&amp;#x2F;&quot; rel=&quot;nofollow noreferrer&quot;&gt;https:&amp;#x2F;&amp;#x2F;hackclub.com&amp;#x2F;&lt;/a&gt;). I&amp;#x27;ve been programming for as long as I can remember, and started homeschooling about 6 years ago to focus more on that (and my other interests).&lt;p&gt;Since I&amp;#x27;m entirely self-taught, I &lt;i&gt;haven&amp;#x27;t&lt;/i&gt; taken any college systems classes — and while I had picked up a lot, I wasn&amp;#x27;t happy with my answer to &amp;quot;what happens when you run a thing.&amp;quot; So I let myself spend a shit ton of time actually learning as much as possible. What I found was that:&lt;p&gt;1. Operating systems and hardware are really fun to learn about!&lt;p&gt;2. Wow, online resources on this stuff are terrible.&lt;p&gt;A decent portion of my research ended up at PDFs of lecture slides from 2014, or StackOverflow answers that were, in fact, incorrect or vastly oversimplified.&lt;p&gt;So, I wrote Putting the &amp;quot;You&amp;quot; in CPU to hopefully provide a better resource to people who wanted to start teaching themselves all this stuff! While I don&amp;#x27;t provide perfect coverage (still need to write a couple paragraphs on SMP), it&amp;#x27;s a lot better than most of what I&amp;#x27;ve seen. I also had fun drawing and making diagrams for the first time, I think I definitely got progressively better and I&amp;#x27;m really proud of some of the drawings in the latter few chapters.&lt;p&gt;P.S. The whole thing is open source on GitHub if you want to look under the hood: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;hackclub&amp;#x2F;putting-the-you-in-cpu&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;hackclub&amp;#x2F;putting-the-you-in-cpu&lt;/a&gt;</text></item></parent_chain><comment><author>ccrush</author><text>I had the same questions when I was about your age and found a lot of intersting answers in the Linux source code. of course it was a lot simpler back then. what really got me going was the osdev community (much smaller back then) and Intels system architecture documentation. iirc part 3a or 3b was where the good stuff is. it tells you a lot less about how things are and a lot more about how things could be. you also get to learn plenty of fun things in OSDEV too like how 32bit processors did 36bit addressing with PAE or how 64bit processors did 52bit addressing to squeeze money out of people. how computers start in 16bit mode and you have to learn systems level assembly code gymnastics to make it to long mode, why there&amp;#x27;s an 8bit mode around, and more. if you liked learning about loading binaries, you&amp;#x27;ll love how many surprises still exist. like 64bit mode still including memory segmentation but forcing it to flat mapping for lonh mode</text></comment>