Ask HN: After Charles Petzold's Code and Nand2Tetris, What Next?

I'm half way through the 2nd edition of CODE book, and will then go through Nand2Tetris, since these 2 have been recommended a lot here on HN. May be its a little early to ask, but still, from learning computers (and software) more deeply, what should be the next step?

Am open to anything and everything. I want to understand computers even more better, assuming (and sincerely believing) it will make me better in my career path to be an SRE/Distributed-Systems Architect.

I'll also be reading DDIA and SICP for sure, will take me own sweet time to go through them since they actually demand time and patience. But would love to get guidance from you all here at HN.

36 points | by gautamsomani 527 days ago

9 comments

  • mindcrime 527 days ago
    • gautamsomani 527 days ago
      Thanks a lot for these. Which CPU architecture would you suggest to begin with first?
      • mindcrime 526 days ago
        That's a good question. Probably either RISC-V or ARM. MIPS is interesting, but I'm not sure that it has much of a future. OTOH, there's plenty of choice and availability of both ARM and RISC-V based computers to play around with. RISC-V is newer and probably still evolving more rapidly, so I guess you'd want to weigh whether you consider that a pro or a con.

        For me personally, I have recently gotten really interested in RISC-V, so I lean that way a little bit. But that's more personal preference than anything concrete I can really cite.

        • snvzz 526 days ago
          >RISC-V is newer and probably still evolving more rapidly

          Yet RVA20(RV64GC) and RVA22 are set on stone.

          • mindcrime 524 days ago
            That's fair. But there's still changes going on in terms of extensions, and then there's the implementation level stuff (both hardware and software). So I guess I was really thinking more in terms of the overall ecosystem than just the instruction set.
  • studygalgos 527 days ago
    Gautam - I started reading this book at the beginning of the year, but life got in the way and I dropped it since then. Though, last night I found myself with some time and picked it back up and read two chapters, "Bytes and Hex" and "An Assemblage of Memory" (yes, I have the first edition).

    My email is in my profile. Feel free to shoot me an email if you'd like to discuss the material. I am planning on reading "The Elements of Computing Systems" next, a.k.a. nand2tetris - so I think it'd definitely be interesting to have someone to talk about these books to.

    I recently started a Discord server with this purpose in mind -study CS books- we are currently reading another one of HN's favorites, Algorithms by Sedgewick. Though, we could definitely create a new section on the server to discuss more computer arch-y books and whatnot.

    I hope you are able to join us! :)

    • gautamsomani 520 days ago
      Hey, I sent you an email, we can discuss further there. Please do check for it. Will forward it again today.
  • hnthrowaway0315 526 days ago
    There is one project that rules over all other projects:

    Find an FPGA board, build a soft core -> bootstrap your own C compiler -> build an OS -> do whatever you want

    • gautamsomani 523 days ago
      May be a stupid question, but what are the pre-requisites for building a softcore for a FPGA? I need a practical answer from someone who has actually done it, cause there will some intricacies which google result may miss but you will know.

      Please do reply :)

  • pbkompasz 526 days ago
    • gautamsomani 526 days ago
      Am sorry but I'm not sure what would be the right books/courses for each of the step. Can you please help with that too?
  • senderista 525 days ago
    Principles of Computer System Design: An Introduction

    https://github.com/wangjohn/mit-courses/blob/master/6.033/Pr...

    • gautamsomani 523 days ago
      Wow. I went through the index, and the content look intense. Thanks a lot for recommending me this book. Will take my own sweet time to go through it.

      Thanks once again. :)

  • johndoe0815 527 days ago
    If you want to continue learning about computer architecture, I would recommend David Harris' and Sarah Harris' book "Digital Design and Computer Architecture", available in MIPS, ARM and RISC V editions.

    https://pages.hmc.edu/harris/ddca/

    An interesting second book that makes the connection to the software side is Bryant/O'Hallaron "Computer Systems: A Programmer's Perspective"

    https://csapp.cs.cmu.edu

    ...and, more on the theory side, both books by Hennessy and Patterson ("Computer Architecture: The Hardware/Software Interface" and "Computer Architecture: A Quantitative Approach").

    On the OS implementation side, I still like Comer's "Operating System Design: The Xinu Approach" quite a lot. While this book is quite old, I learned OS design from Comer (and am still teaching this at university level 30 years later...).

    https://xinu.cs.purdue.edu

    A good complement would be Cox/Kaashoek/Morris "xv6: a simple, Unix-like teaching operating system" (free download)

    https://pdos.csail.mit.edu/6.S081/2020/xv6/book-riscv-rev1.p...

    A useful addition on OS theory is Remzi and Andrea Arpaci-Dusseau's "Operating Systems: Three Easy Pieces" (also free)

    https://pages.cs.wisc.edu/~remzi/OSTEP/

    If you want to dig into programming languages, I would recommend Cooper/Torczon "Engineering a Compiler" (unfortunately published by Elsevier) and "Crafting Interpreters" by Nystrom (free)

    https://shop.elsevier.com/books/engineering-a-compiler/coope...

    https://craftinginterpreters.com

    Finally, if you're interested in virtualization (system and bytecode level), I can recommend Smith/Nair "Virtual Machines"

    https://www.sciencedirect.com/book/9781558609105/virtual-mac...

    I use many of these books in my courses and recommend them to my students - so far, they seem to like the books:

    (My OS course at NTNU) https://multicores.org/tdt4186_22/

    (My Compiler Construction course at NTNU) https://multicores.org/tdt4205_21/

    I hope this helps a bit. Learning all of this will be quite a challenge but also bring a lot of fun! :)

    • gautamsomani 527 days ago
      Wow. This is a treasure of books and topics. Thanks a lot for this. Will definitely explore all of them.
  • hackermailman 526 days ago
    If your goal is distributed systems then take it, lectures are all on YouTube https://pdos.csail.mit.edu/6.824/schedule.html
    • gautamsomani 523 days ago
      This looks good. Thanks for sharing this :)
  • xqb64 527 days ago
    You can't go wrong if you pick up anything from Andy Tanenbaum.
    • gautamsomani 527 days ago
      True that. And thanks for pointing out :)
  • an_aparallel 524 days ago
    can anyone recommend anything within this world related to MIDI programming/OS's specifically for sequencing midi? im hellbent being able to work on something similar to the mister FPGA (Atari ST).