2021 Edition. This is a continuation of the previous two threads which can be found here:<p>https://news.ycombinator.com/item?id=22299180<p>https://news.ycombinator.com/item?id=13660086<p>Other resources:<p>https://github.com/danistefanovic/build-your-own-x<p>https://github.com/AlgoryL/Projects-from-Scratch<p>https://github.com/tuvtran/project-based-learning
Not a book, but <a href="https://hackattic.com/" rel="nofollow">https://hackattic.com/</a> is in this vein. It's not the standard coding challenge website it may seem to be, instead a collection of small projects representative of the core ideas underlying "real world" systems. It provides just enough scaffolding and direction to get one started down the path of autodidactic exploration; satisfying and enlightening without being frustrating.
_Build Your Own Z80 Computer_ by Steve Ciarcia is fantastic. You will learn the basics of computer architecture, digital logic, assembly language, power supply design, and a basic operating system. Even though it's a book from the early 80s using chips from the late 70s the parts are still available.I believe the author has posted a pdf of the book on his website, but there are used copies on Amazon and Ebay and it's a lot of fun doing a project like this without using the internet by relying on nothing but the paperback and a mouser catalog. <a href="https://www.amazon.com/Build-Your-Own-Z80-Computer/dp/0070109621" rel="nofollow">https://www.amazon.com/Build-Your-Own-Z80-Computer/dp/007010...</a> <a href="https://archive.org/details/BuildYourOwnZ80ComputerSteveCiarcia/Build_Your_Own_Z80_Computer_Steve_Ciarcia" rel="nofollow">https://archive.org/details/BuildYourOwnZ80ComputerSteveCiar...</a>
<i>The Elements of Computing Systems</i> is being discussed in a front-page thread at the moment (<a href="https://news.ycombinator.com/item?id=26036790" rel="nofollow">https://news.ycombinator.com/item?id=26036790</a>).
- Writing an interpreter in Go [1]<p>- Writing a compiler in Go [2]<p>- Build a distributed service (append log) in Go [3]<p>[1] <a href="https://interpreterbook.com/" rel="nofollow">https://interpreterbook.com/</a><p>[2] <a href="https://compilerbook.com/" rel="nofollow">https://compilerbook.com/</a><p>[3] <a href="https://pragprog.com/titles/tjgo/distributed-services-with-go/" rel="nofollow">https://pragprog.com/titles/tjgo/distributed-services-with-g...</a>
I recommend The Ray Tracer Challenge: <a href="https://pragprog.com/titles/jbtracer/the-ray-tracer-challenge/" rel="nofollow">https://pragprog.com/titles/jbtracer/the-ray-tracer-challeng...</a><p>Guides you through a language-agnostic test-driven development of a primitive ray tracer. Could be done in a weekend or so of persistent work. And at the end you can bask in the glory of your fans running at 100% during rendering!
For Python:<p>* Tiny Python Projects (<a href="https://www.manning.com/books/tiny-python-projects" rel="nofollow">https://www.manning.com/books/tiny-python-projects</a>) by Ken Youens-Clark<p>* Impractical Python Projects (<a href="https://nostarch.com/impracticalpythonprojects" rel="nofollow">https://nostarch.com/impracticalpythonprojects</a>) and Real world Python (<a href="https://nostarch.com/real-world-python" rel="nofollow">https://nostarch.com/real-world-python</a>) by Lee Vaughan<p>This discussion thread is nice if you want to explore what people are automating using Python: <a href="https://www.reddit.com/r/learnpython/comments/k5k1h0/what_do_you_automate_with_python_at_home/" rel="nofollow">https://www.reddit.com/r/learnpython/comments/k5k1h0/what_do...</a>
52 Random Weekend Projects: For Budding Inventors and Backyard Builders<p><a href="https://www.amazon.com/Garage-Science-Incredible-Projects-Backyard/dp/1250184509" rel="nofollow">https://www.amazon.com/Garage-Science-Incredible-Projects-Ba...</a>
Let's Build a Compiler[1] (old book but still good, you can use Free Pascal if you want to use a modern compiler).<p>[1] <a href="https://compilers.iecc.com/crenshaw/" rel="nofollow">https://compilers.iecc.com/crenshaw/</a>
We did <a href="https://codewithrepl.it" rel="nofollow">https://codewithrepl.it</a> recently which is a collection of beginner and intermediate Python projects - would love any feedback if you try them out!
<a href="https://builditwith.com/nitro" rel="nofollow">https://builditwith.com/nitro</a> — Seven web application projects from corporate message board to stock ticker. Learn Erlang as you go.
"Hands on rust" has a couple of game based projects that you work with using rust <a href="https://www.pragprog.com/titles/hwrust/hands-on-rust/" rel="nofollow">https://www.pragprog.com/titles/hwrust/hands-on-rust/</a> - one is a flappy dragon game and the other is a dungeon crawler.
Data is Beautiful, where each short section is on building a different visualisation with Python <a href="https://datacrayon.com/shop/product/data-is-beautiful/" rel="nofollow">https://datacrayon.com/shop/product/data-is-beautiful/</a> (my book)
"Agile Web Development with Rails [6]" (2020) teaches TDD and agile in conjunction with a DRY, CoC, RAD web application framework: <a href="https://g.co/kgs/GNqnWV" rel="nofollow">https://g.co/kgs/GNqnWV</a>