
Ask HN: What are some books where the reader learns by building projects? - Shosty123
A continuation of https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=13660086 which has been incredibly useful to me.<p>I recently finished this phenomenal book called &quot;Building Enterprise JavaScript Applications&quot;:<p>https:&#x2F;&#x2F;www.packtpub.com&#x2F;web-development&#x2F;building-enterprise-javascript-applications<p>Which takes the reader from zero to building a non-trivial production fullstack application with JavaScript. I also recommend &quot;Building Git&quot;. The title is self-explanatory:<p>https:&#x2F;&#x2F;shop.jcoglan.com&#x2F;building-git&#x2F;<p>Other resources:<p>https:&#x2F;&#x2F;github.com&#x2F;AlgoryL&#x2F;Projects-from-Scratch<p>https:&#x2F;&#x2F;github.com&#x2F;tuvtran&#x2F;project-based-learning
======
carapace
Not quite what you're talking about but the best book on car mechanics I ever
read... It was red, and textbook-sized, hardcover. Lots of drawings.

It literally started with an explosion in a can, and then progressively
enhanced that idea step-by-step: add a lid to the can to capture the energy,
add a lever to keep the can lid from flying away, and then attach the lever to
a wheel so that it returns the lid to the top of the can for another
explosion, add walls to guide the lid, ta-da! Piston.

It goes on like that, adding each piece of the puzzle in a logical way, until
you have a mental model of an internal combustion engine. You definitely
_feel_ like you could build one from scratch (if you had the metallurgy
skill.)

~~~
someguy101010
Boy if you could find the name of that book I'd really appreciate it

~~~
zebrafish
you might be interested in howacarworks.com. I stumbled across these videos on
youtube earlier this year when I was researching the topic. I was unwilling to
pay because it was more for my own curiosity than an actual need to learn but
it seemed pretty thorough.

~~~
dmalvarado
Man, that site has come a LONG way in the past couple of years. I haven't seen
it since probably 2015. Back then, the diagrams were super useful, and the
content easily understandable. Now it looks like a Mechanics University!

------
nsainsbury
Not a book, but if you're looking to learn modern SQL in a hands-on way, I
created Mastery with SQL (masterywithsql.com) specifically because I was
frustrated with traditional SQL (and PostgreSQL) content that's lacking in
high quality and challenging exercises.

Mastery with SQL has over 150 exercises, ranging from easy to very difficult,
where you're primarily working with a single database and trying to answer
interesting questions about a business (which months saw the highest revenue,
best sales employee, most watched movie, find missing records, etc.).

I spent an enormous amount of time working on the exercises for this course
(more than the actual content itself) and people who take the course
consistently tell me working through the problems helped them learn SQL more
deeply than they've learned anywhere else.

~~~
jacobkg
I can vouch for this. I took the course after seeing it posted in HN and feel
like among other things I finally understand joins

------
larrywright
I know you specifically asked for books, but I think these are too good to not
mention.

Ben Eater has a series of Youtube videos that explores how computers work,
starting from first principles, and in the process you build an 8 bit computer
(or a 6502 computer in a different series). He actually sells kits of the
parts to build it yourself, or you can buy the parts yourself.

It’s a deep dive into how computers work, but it’s very approachable. He’s an
excellent teacher, and the video format works really well for what he’s
teaching - it’s hard to imagine this working as well in book form.

Build an 8-bit computer from scratch:
[https://eater.net/8bit](https://eater.net/8bit) Build a 6502 computer:
[https://eater.net/6502](https://eater.net/6502) Let’s build a video card:
[https://eater.net/vga](https://eater.net/vga)

I’ve watched a bunch of these videos in the past few weeks and I’ve learned
_so_ much from them. I can’t recommend them enough.

~~~
j_m_b
One thing I like about Eater is that he keeps mistakes that he's made in the
content. He's not some rockstar, just a curious guy whose made a lot of very
interesting videos.

~~~
larrywright
Agreed. Watching him debug something is very enlightening. The whole idea of
setting things up so that he can manually trigger clock cycles to step through
what the processor is doing was awesome.

------
steve_g
_Elements of Computing Systems_ by Nisan and Schocken has you 'build' a
computer from basic logic gates to CPU/Memory to assembler, VM, etc. all the
way to a running program.

[https://www.nand2tetris.org/](https://www.nand2tetris.org/)

~~~
Delfino
I recently read Code by Charles Petzold and it quickly become one of my
favorite books, this seems like a great follow-up

~~~
f00zz
That book is amazing. It inspired me to look for more resources on computer
architecture and Verilog, and after a while I had a very simple but functional
CPU in Verilog that can compute prime numbers
[[https://github.com/f00zz/rei](https://github.com/f00zz/rei)].

------
jefffoster
I found Paradigms of AI Programming
([https://en.wikipedia.org/wiki/Paradigms_of_AI_Programming](https://en.wikipedia.org/wiki/Paradigms_of_AI_Programming))
an amazing book to work through.

It takes you through implementing some classic AI examples (such as Eliza) and
teaches you how to write code in a data-first style through Lisp.

I worked through the whole thing building it in Clojure and learnt loads (not
just about AI, but about writing readable code in general). I can't recommend
it highly enough!

~~~
jhbadger
Yes, it really teaches both good Lisp style and the history of AI.

------
djhworld
I've been making my way through "Writing an Intepreter in Go" and "Writing a
compiler in Go" [https://interpreterbook.com/](https://interpreterbook.com/)

The Go stuff is really just a means to an end, the real value comes from the
practical learnings of how to build a functioning interpreter and compiler
(and virtual machine!) for a programming language the author made up called
Monkey.

It's not a book full of theory but it lays some nice foundations that might
help you understand the theory better :)

~~~
Cthulhu_
On a similar note, Go Programming Blueprints, which just takes you right into
practical affairs - project organization, template loading / rendering, a
little bit of testing, REST apis, oAuth, image handling (via oauth, gravatar
and file upload), databases, CLI's, external APIs, App Engine, microservices,
gRPC and Docker. The main gripe I've had with it so far is that the bit of
HTML / JS that is in there seems rather dated, but on the other hand, it's
good old jquery from CDNs instead of bothering the reader with setting up
nodejs, webpack and all that.

I really should kick myself up the arse and go beyond chapter 3, I'm doing Go
in a real project now.

~~~
hartzell
Go Programming Blueprints is from 2015, have you had any issues with it
feeling out of date?

------
eachro
Ray Tracing in a
Weekend([https://raytracing.github.io/books/RayTracingInOneWeekend.ht...](https://raytracing.github.io/books/RayTracingInOneWeekend.html))
is an incredible guide to work through to write a basic functioning ray
tracer.

~~~
Insanity
Was going to mention this myself. Can recommend this book, it's great fun and
you can indeed get through it in a weekend.

------
FarhadG
_Shameless plug_

My book on WebGL2 (500+ pages) takes you from understanding the rendering
pipeline, WebGL2 API, etc. and progressively walks the reader by building a
feature-rich 3D graphics engine in WebGL2 (ES6) that includes cameras, lights,
shaders, post processing, OBJ models, etc. with a final project of a 3D
virtual car showroom.

[https://www.amazon.com/Real-Time-Graphics-WebGL-
interactive-...](https://www.amazon.com/Real-Time-Graphics-WebGL-interactive-
applications-ebook/dp/B07GVNQLH5)

------
fsloth
The entire book Structure and Intrerpretation of Computer Programs is like
that. It explains how to implement the language Scheme in any language (by
decomposing the problem to small enough atomic entities you can implement and
combine them in any language). I suppose it’s excellent practice since the
book uses only Scheme, so the reader must implement the primitives of the
interpreter themselves. So you need to figure out how to implement tiny things
yourself (which is fun) and then goes on to show how those combine together
into a wonderfull whole.

------
tbrock
A Curios Moon - a data science mystery that teaches you PostgreSQL by working
on projects that use real nasa data sets in a fictional setting (your role as
a data science intern at red:4)

[https://bigmachine.io/products/a-curious-
moon/](https://bigmachine.io/products/a-curious-moon/)

~~~
pkalinowski
This is really nice book. It assumes you are a developer/good with computers,
though, so some of the things like dev environment setup are ommited

~~~
culopatin
Does it assume I know SQL though?

~~~
pkalinowski
No, you can start with absolutely zero knowledge, but it has different
approach than usual courses.

You don't start with simple selects, but importing data from files and
normalizing it. You're intern at aerospace startup after all.

I'd say it's _refreshing_ compared to prevalent approach to teaching SQL

------
spodek
_Initiative: A Proven Method to Bring Your Passions to Life (and Work)_
[https://www.amazon.com/Initiative-Proven-Method-Bring-
Passio...](https://www.amazon.com/Initiative-Proven-Method-Bring-
Passions/dp/1733039902)

Here's a video of the author (me) interviewing a reader who did all the
exercises, in the process going from (his words) below middle management to
creating his dream project with his dream business partner
[https://youtu.be/zfV3yNKp0h8](https://youtu.be/zfV3yNKp0h8). The process
costs nearly nothing in money and creates more time for his family.

Here are written reviews from NYU students and clients who took the project-
based class the book is based on [http://joshuaspodek.com/this-is-one-of-the-
greatest-classes-...](http://joshuaspodek.com/this-is-one-of-the-greatest-
classes-i-have-ever-taken-it-was-engaging-thought-provoking-challenging-and-
fun).

If anyone has questions, I'm happy to answer here or by email. If anyone is
interested but cost gets in the way, email me also and I'll try to work
something out.

~~~
linkel
After seeing your comment here yesterday, I started reading your book
Initiative.

I am in the middle of the first exercise and have some questions.

Many of the examples in your book show people connecting these separate ideas
that are reasonably understandable and applicable to the general population--
the girl who recognized that many people have a fear of needles and sought to
design a medical to device to help, or the student who liked going to
festivals and thought about aligning attendee interests with the festivals'
interests and waive attendance fees for attendees by having them volunteer at
charities. It sounds like students in your class came up with relatable ideas
by looking at problems in their lives that they noticed.

Right now, I'm merely a year into my career as a software engineer (having
switched careers last year) and I am very interested in learning about good
software engineering practices. I like seeing great CI/CD pipelines and being
able to deliver very quickly. I like the sound of good DevOps practices
(currently reading slowly through Accelerate by Forsgren) and I so far have
really enjoyed reading books on scalability and reliability (Designing Data-
Intensive Applications by Kleppmann is frequently recommended and I got a lot
out of the book). I'm vaguely interested in MLOps.

I'm pretty happy being more of a cog in a machine right now so that I can see
how an established company runs from the inside. I don't know that I'm
immediately interested in a project that is more generalizable, the way your
book examples are. But it does seem like an entrepreneurial mindset is still
core to career progression since in the end a job is also about solving
people's problems (where people may be inside or outside of the company). Thus
I want to figure out how to use Initiative to iteratively improve my career.

I am wondering if people found success applying your Method Initiative
concepts to a narrower scope in a specific technical field, and whether you
could share some of those stories.

~~~
spodek
Andreas is a later example (p.77) who started from a strong software
background. You'll see that he went in a different direction for a while,
developed skills doing things outside software, and applied those skills when
he returned to software, now contributing to strategy where he works. Jonathan
(p. 10), whose project landed him in Y Combinator, began with a narrow legal
issue of a specific chapter of bankruptcy.

The first time you do the exercises, you mostly develop skills. Sometimes a
project of a lifetime emerges the first time, but more often, those skills
lead you to see opportunity where you didn't before because your expectation
of success increases. The next time you do it, or if you switch projects, I
predict you'll say the technical aspect set the direction of your project but
that you could do what you're doing in any field you wanted to.

Few people had identified problems before starting the exercises. A few did,
but most of the problems they found came from the exercises. Even then, the
first problems they identified, and likely yours, were only seeds for the next
exercises, which refine them.

What you wrote above looks like the foundation of what would go in your first
exercise. That exercise gives direction. The later exercises will have you
move in that direction. They will lead you to find and solve problems and
create working relationships with people in your areas of interest.

Does that help?

~~~
linkel
Yes, it does. Thank you for replying. I'll see where the exercises take me.

------
rtfeldman
Elm in Action is that way.

Over the course of the book you build a photo sharing application from
scratch. Each chapter uses new "feature requests" from a fictional manager as
a way to introduce and teach new Elm concepts.

[https://www.manning.com/books/elm-in-
action?a_aid=elm_in_act...](https://www.manning.com/books/elm-in-
action?a_aid=elm_in_action&a_bid=b15edc5c)

(It's technically in Early Access because the print book hasn't hit the
shelves yet, but all the chapters are finished and available in the online
version.)

~~~
purplezooey
When I see elm I think mail, like as in Pine Is Not Elm

------
xrd
My book from O'Reilly ("Building Tools with GitHub") builds a variety of
applications using the GitHub API in five different languages (Ruby,
JavaScript, Python, C#, Java on Android). All the chapters build a complete
project (app on Android for writing blogs with Jekyll for example).

You can buy it or read it free online (thanks again to O'Reilly for allowing
us to release it under creative commons):

[https://buildingtoolswithgithub.teddyhyde.io/](https://buildingtoolswithgithub.teddyhyde.io/)

No prior experience with the languages are required, so it is good for a
beginner wanting to dip their toes into that language and/or facet of the API.

------
andrewzah
* The Rails Tutorial - [https://www.railstutorial.org/](https://www.railstutorial.org/)

This book (although an older edition) is largely what got me into programming,
and taught me so much about Rails.

* Programming WebAssembly with Rust - [https://pragprog.com/book/khrust/programming-webassembly-wit...](https://pragprog.com/book/khrust/programming-webassembly-with-rust)

This book steps through learning about web assembly, writing it by hand, and
then implementing a server for webassembly. I had so many misconceptions about
webassembly/wasm before reading this.

~~~
jressey
When anyone says they want to learn to code(tm), I tell them to do that book,
front to back, then build a twitter clone with what they've learned. I expect
you'd be job ready after doing that. It's how I did it. Nobody has taken my
advice in earnest yet.

------
thrower123
Some good ones I don't see yet, which I like because they very much follow the
organic path you might follow doing things incrementally, rather than
presenting everything full-blown.

How to Make an RPG - Build a retro-style JRPG from scratch

[https://howtomakeanrpg.com/](https://howtomakeanrpg.com/)

Mazes for Programmers: Code Your Own Twisty Little Passages by Jamis Buck -
covers a whole gamut of different maze generation algorithms. This author also
has a great book on doing a raytracer step by step.

[https://www.amazon.com/Mazes-Programmers-Twisty-Little-
Passa...](https://www.amazon.com/Mazes-Programmers-Twisty-Little-
Passages/dp/1680500554)

Rough Cut--Woodworking with Tommy Mac: 12 Step-by-Step Projects - very nice
beginning woodworking book.

[https://www.amazon.com/Rough-Cut-Woodworking-Tommy-Step-
Step...](https://www.amazon.com/Rough-Cut-Woodworking-Tommy-Step-
Step/dp/1600854168)

The Inform (6) Beginner's Guide - introduces the Inform 6 interactive fiction
language through three successive text adventure games

[https://www.inform-fiction.org/manual/IBG.pdf](https://www.inform-
fiction.org/manual/IBG.pdf)

------
kd5bjo
There’s the Gingery book series that starts by describing how to build a
charcoal foundry and goes all the way to a complete machine shop.

[https://en.m.wikipedia.org/wiki/David_J._Gingery](https://en.m.wikipedia.org/wiki/David_J._Gingery)

~~~
THansenite
This series popped into my head as soon as I read what the original poster was
looking for. As someone who loves building things, I've read through many
Gingery books in the series with aspirations of building many of the machines.
That said, the refractory sand for the foundry in the first book is still
sitting in a bag in my garage.

------
travisjeffery
I'm currently writing a book for PragProg called Building Distributed Services
with Go (though it mostly applies to other languages too) that's walks you
through building a distributed database from scratch. You can sign up on this
mailing list to know when it's available: [https://travisjeffery.us4.list-
manage.com/subscribe?u=1e3ff7...](https://travisjeffery.us4.list-
manage.com/subscribe?u=1e3ff7..).

~~~
CubsFan1060
The link doesn't quite work there. But I'd be interested in signing up.

~~~
dkmar
[https://travisjeffery.us4.list-
manage.com/subscribe?u=1e3ff7...](https://travisjeffery.us4.list-
manage.com/subscribe?u=1e3ff7d7791b26a8f60b9f16c&id=653935be08)

via his comment history :)

~~~
travisjeffery
Thanks!

~~~
CubsFan1060
Any idea what your timeline looks like? I know a lot of PragProg books do beta
books occasionally.

~~~
travisjeffery
Yeah I'm discussing with my editor now about when to put out the beta it'll be
out either after we finish editing the chapter I just finished writing or the
next one. So pretty soon. I hope to have the whole book finished by July but
that's a bit more TBD up to how soon I finish writing the last few chapters.

~~~
ifoundthetao
Well, I'm interested and will purchase this.

------
troughway
Frank Luna's _Introduction to 3D Game Programming with DirectX 11_ is an
underrated gem in the genre. I was surprised when I saw Microsoft recently
recommending it to people to learn D3D11 before they jump into D3D12.

It doesn't actually cover game programming per-se, it's more of an
introduction to 3d graphics programming book, but each chapter builds upon the
last and there are assignments at the end of each chapter that allow you to
play around with concepts that he walks you through so you can build a good
understanding.

I've seen other books that are often recommended, and they're great by
themselves, and they are nowhere near as utilitarian as this book. I cannot
recommend them to beginners even if they're marketed as such.

By the end of it, you have a very good handle on a variety of concepts that
you can readily apply towards, say, building a modern-day PBR pipeline.

It was my first exposure to spaced repetition learning, before I knew such a
thing existed.

~~~
misiti3780
I have never read it but how is SRS incorporated into it?

~~~
troughway
It took me awhile to get through the whole book, so the concepts that were
covered by chapters I had read weeks or longer ago would every so often make a
come-back in the proceeding chapters. The timing and repetition of it all
reinforced and helped me in learning it for years to come.

There are a lot of "good" books on graphics that jump you from one topic to
another but never really integrate what you learn or ask you to take something
covered earlier, but now combine it with a newly-learned concept to create
something novel (novel in the eyes of a beginner). We need more books that
integrate, because a lot of very recent (as of SIGGRAPH 2019) graphics
development is about taking a set of concepts you already know, and exploiting
them in different ways.

------
cedricium
There are some really cool projects in the "500 Lines or Less"[0] book which
is a part of the "The Architecture of Open Source Applications" series.

[0]: [http://aosabook.org/en/index.html](http://aosabook.org/en/index.html)

~~~
faizshah
This is a really cool recommendation, thanks! Very inspirational for side
projects.

It would be cool to see something like this for data science projects. Like a
recommender system in 500 lines or less.

------
ColinWright
NAND to Tetris?

[https://www.nand2tetris.org/](https://www.nand2tetris.org/)

~~~
gmiller123456
+1. The projects in this class are extremely well defined and build upon each
other. And they have a framework and test cases for validating your work, so
you know if you have the right answer before moving on.

------
xz0r
\- Automate boring stuff with Python:
[https://automatetheboringstuff.com/](https://automatetheboringstuff.com/)

\- Elements of Computing Systems (Building a computer from scratch on a
hardware simulator):
[https://www.nand2tetris.org/book](https://www.nand2tetris.org/book)

------
ethangarofolo
I don't know if linking to one's own work is considered gauche here, but since
it fits with the original question, my own book Practical Microservices fits
this description ([https://pragprog.com/book/egmicro/practical-
microservices](https://pragprog.com/book/egmicro/practical-microservices)). It
takes the reader from inception of a projection to a functioning system,
explaining the basics of microservices, event sourcing, and CQRS along the
way. Each chapter builds on the previous ones.

------
ggambetta
My own free, open-source Computer Graphics book guides you through building
both a raytracer and a rasterizer: [https://gabrielgambetta.com/computer-
graphics-from-scratch](https://gabrielgambetta.com/computer-graphics-from-
scratch)

Soon to become a real book published by No Starch Press!

------
tjchear
I maintain a blog that teaches readers how to implement toy versions of big
projects in C++ at
[https://littlebigprojects.io](https://littlebigprojects.io). I hope to
eventually cover distributed systems and compilers.

------
celnardur
In my compilers class we used a book that my professor wrote that takes you
through all the steps and algorithms for making a compiler for a c like
language. You can find it online for free at:
[https://www3.nd.edu/~dthain/compilerbook/](https://www3.nd.edu/~dthain/compilerbook/)

I really like this book because it really takes you through all the steps.
However, it's very readable and provides great examples of how to actually
implement some of the components.

I also like it because it explains how to use tools like Yacc and Bison, while
explaining how they work underneath and the motivation for using such tools.

I leaned on this book heavily in the class where the main assignment was
writing our own compiler from scratch in C, and I'm currently using it now to
make a compiler in rust for a custom language.

------
ballpark
\- Practical Common Lisp

\- Land of Lisp - [http://landoflisp.com/](http://landoflisp.com/) \- watch
the video, it's hilarious

\- Build Your Own Lisp -
[http://www.buildyourownlisp.com/](http://www.buildyourownlisp.com/) \- Learn
C by creating a lisp in C

\- In the spirit of making your own lisp, I would recommend
[https://github.com/kanaka/mal](https://github.com/kanaka/mal) \- learn any
language, by making a lisp in that language

~~~
fishmaster
Ah, I see you're a man of culture as well.

~~~
ballpark
As a rule, I only read lisp books

------
timClicks
For Rust, try Rust in Action [https://www.manning.com/books/rust-in-
action](https://www.manning.com/books/rust-in-action).

It has several worked examples, including a key/value append-only database, a
CPU emulator, an NTP client, a floating point implementation, multiple
graphical applications, a binary files inspector and a few others!

------
e_ameisen
Disclaimer: This is a book I wrote.

Building Machine Learning Powered Applications walks you through building an
ML application end-to-end, from product idea to a (simple) deployed version.

The free first chapter is available here
[https://mlpowered.com/book/](https://mlpowered.com/book/)

The github is at [https://github.com/hundredblocks/ml-powered-
applications](https://github.com/hundredblocks/ml-powered-applications)

------
dceddia
I don’t know if it’s alright to mention my own work, but the book I wrote to
teach React is project-based. It’s got a bunch of very small projects and
exercises rather than a single massive one, and the later projects review
concepts from the earlier ones. It’s called Pure React and it’s digital-only
right now (maybe one day I’ll get it printed!) [https://daveceddia.com/pure-
react/](https://daveceddia.com/pure-react/)

~~~
rckoepke
I'm glad you did! Additionally, is there any reason that I should learn React
using Node.js rather than python? I'm not particularly anti-Node.js but I'd
rather learn Django simultaneously if it was all the same difference.

~~~
dceddia
Nope! The choice of backend is entirely independent from the choice of front
end. React pairs nicely with Django, Rails, Elixir, PHP... anything that can
serve static files, basically :)

The only time it could start to matter is if you want to do server-side
rendering of the React app, in order to serve complete static HTML for the
first page load. It can matter for SEO and page load speed. If you need SSR,
you need a backend that supports it. It looks like it's at least possible with
Django, according to a 30-second google search:
[https://github.com/nielslerches/django-react-
ssr](https://github.com/nielslerches/django-react-ssr) (ymmv, that repo has 4
stars, so I dunno :)

------
ratfaced-guy
Code: The Hidden Language of Computer Hardware and Software

[https://www.amazon.com/Code-Language-Computer-Hardware-
Softw...](https://www.amazon.com/Code-Language-Computer-Hardware-
Software/dp/0735611319)

From binary to a full computer

~~~
klondike_klive
I constantly found myself having to put the book down, puff my cheeks out and
say "whoa." It really blew my mind.

~~~
ibeckermayer
I was inspired to change my career (was originally studying physics) because
of this book

------
adamfeldman
"Deep Learning for Programmers: Interactive Programming for Artificial
Intelligence"

[https://aiprobook.com/deep-learning-for-
programmers/](https://aiprobook.com/deep-learning-for-programmers/)

------
nickjj
For Flask there's
[https://buildasaasappwithflask.com/](https://buildasaasappwithflask.com/).

It's a 20+ video course where you build a real world SAAS app. We build up 1
big app through out the course.

There's also 30-40+ hours worth of self guided optional assignments to add
features into the application based on what you learn in each section. It's
all positioned in the form of specifications, similar to how it would be when
doing any type of job or contract gig.

Funny enough, many people have contacted me saying they took the course but
don't even use Python and Flask. They were just experienced programmers using
other web frameworks but wanted to see how the app all comes together so they
can use the same patterns in their framework of choice.

------
codearm
A series of blog posts to write an OS from scratch in Rust: [https://os.phil-
opp.com/](https://os.phil-opp.com/)

------
jhbadger
I liked "Deep Learning and the Game of Go" (by Max Pumperla and Kevin
Ferguson). You actually create an AI Go player, one which may not be quite on
the level of AlphaGo, but one that is probably better than any traditional
min-max based player that was the state of the art until recently.

~~~
Buttons840
I skimmed that book. I already knew some machine learning and AI techniques,
so it was a bit to verbose for me, but was a good book.

I never did get a working Go AI though. I'm a Go beginner and never created an
AI that was close to challenging to me. I didn't follow the book exactly
though, I did my own thing loosely guided by the book, so my failures do not
necessarily reflect poorly on the book.

Did you ever get a working Go AI?

------
aredirect
I wrote Nim days:
[https://xmonader.github.io/nimdays](https://xmonader.github.io/nimdays) you
will find redis parser, redis clients, webframework, assets bundler, tcp
router, terminaltables, .. and more

Also I love Real World Haskell and Practical Common Lisp

------
Animats
"A Boy and A Battery" (1942), Yates.

There was a whole series, "A Boy and a Motor", "The Boy's Guide to Gas
Engines", etc. How to build your own toys if you have few tools but the skills
of a master machinist.

------
clmul
Physically Based Rendering is basically a complete guide to building a modern
physically based rendering engine (it even won an Academy Award)

[https://pbrt.org/](https://pbrt.org/)

------
rcfw
Embedded Systems: Introduction to Arm® Cortex™-M Microcontrollers

It's a pretty good introduction to embedded programming, with several projects
included. Valvano's course at University of Texas is also available as a MOOC.

------
harrisonjackson
Ray Wenderlich books on mobile development. His site started as basic
tutorials for iOS dev and has grown to cover other mobile development, unity,
server-side swift and more. It is all project-based. The books are great and
the website has a lot of good free content.

[https://store.raywenderlich.com/](https://store.raywenderlich.com/)

------
htrapz
The Accounting Game: Basic Accounting Fresh from the Lemonade Stand by Darrell
Mullis

With this book you a build a business from nothing, and in the process you
learn: The mechanics of Balance Sheet, P/L Statement and Cash flow Statement.
(My initial motivation was to understand these statements, inorder to have a
better understanding of the companies I want to invest in)

------
acoye
Elements of Euclid ? You build the proofs in your head step by step.

------
DyslexicAtheist
not sure if this fits the bill but _Car Hacker 's Handbook_ by OpenGarages
[http://opengarages.org/handbook/](http://opengarages.org/handbook/) helped me
to understand CAN, the ECU, and mess with my car in ways I never thought
possible. The security lesson is an added bonus.

------
devrob
Hope it’s cool to link our own stuff ?

I’m writing one right now on building a mini trading bot platform.

It would be great to hear what you like/dislike in these types of books.

I don’t have any marketing website up at the moment but I created this mailing
list if you’re interested in following the developments
[http://bit.ly/tradingbotplatformbook](http://bit.ly/tradingbotplatformbook)

(Link redirects to [https://cdn.forms-content.sg-
form.com/f306b813-475c-11ea-9be...](https://cdn.forms-content.sg-
form.com/f306b813-475c-11ea-9be4-6a1f225bfc93))

------
benjaminjosephw
Thorsten Ball's Writing An Interpreter In Go.

A fantastically written technical book that walks through writing an
interpreter for a simple programming language. It's test driven and a great
introduction to the core concepts. Also a good book to get hands on with
idiomatic Go code.

[https://interpreterbook.com/](https://interpreterbook.com/)

Thorsten does a great job talking about the concepts in the book in this Go
Time podcast:
[https://changelog.com/gotime/107](https://changelog.com/gotime/107)

------
cweagans
[https://interpreterbook.com/](https://interpreterbook.com/)

[https://compilerbook.com/](https://compilerbook.com/)

I <3 these books. They're very well written, and I recommend them every time
this question comes up. I also have [https://github.com/cweagans/awesome-diy-
software](https://github.com/cweagans/awesome-diy-software), which is similar
to the project-based-learning link that you posted.

------
arjun27
[https://beautifulracket.com](https://beautifulracket.com)

------
ifoundthetao
Black Hat Go -- Excellent book!

~~~
marinhero
I'm interested in getting this book. What are the things you liked about it?

~~~
ifoundthetao
It's pretty practical so far. Right now I'm just finishing up chapter 4 (HTTP
Servers, Routing, and Middleware), so I haven't completed all of it. But as it
stands, a lot of what you go through, you reasonably expect you may be able to
use on an actual pen test. The real power though, is when you're building out
your own tooling with these things.

You just set up a framework in the book, but this is all easily extendable to
whatever you want. I'm not the best at Go, so it's a useful "nightly devotion"
of time to spend working through it for an hour or so.

I've also been going through Writing an Interpreter in Go, and have picked up
the companion to that Writing a Compiler in Go. So far, that's pretty good
too, but I'm focusing on Black Hat Go first, to complete it.

~~~
marinhero
Thank you! I read a little bit more about it and I think I'll give it a Go ;)

------
bunya017
Python Crash Course [1]

This book is especially good for beginners in python, it feels as if the
author is teaching you in person. All the exercises in every chapter builds to
a mini project by the end of that chapter. One can skip the basics section and
jump into the projects section which has: Alien Invasion (game programming
with pygame), Data Visualization, and Web Development (using Django).

[1] [https://nostarch.com](https://nostarch.com) pythoncrashcourse2e

------
brainlessdev
Structure and Interpretation of Computer Programs, where the reader implements
a Lisp

------
bachmeier
Lots of interesting (smaller) projects in D Cookbook:

[https://www.packtpub.com/application-
development/d-cookbook](https://www.packtpub.com/application-
development/d-cookbook)

More substantial is the Linux from scratch series:

[http://www.linuxfromscratch.org/](http://www.linuxfromscratch.org/)

------
miguelsm
_Adventure in Prolog_ by Dennis Merritt teaches you different features of
Prolog in a step-by-step manner while developing a game.

------
bszupnick
Refactoring by Martin Fowler.

He takes you through a piece of code and refactors it all into smaller and
more usable parts explaining what he's doing along the way. He does this with
two difference pieces of code, if I recall correctly, then the third part is
an index of all possible refactors.

I read it cover to cover in less than a week and has totally changed the way I
program.

------
dilap
Already mentioned in the first thread, but "Crafting Interpreters" is
excellent.

In the first half of the book you write an interpreter for a simple scripting
language; in the second half of the book, you write compiler to bytecode + vm.

Very clear, fun, excellent writing. Highly recommended.

It was also kind of amazing to very quickly have something that ran more
quickly than python!

------
outlace
Shameless self-promotion. We have a book on deep reinforcement learning that
is completely project based in Python: [https://www.manning.com/books/deep-
reinforcement-learning-in...](https://www.manning.com/books/deep-
reinforcement-learning-in-action)

------
kagajr
Manning - Getting MEAN with Mongo, Express, Angular, and Node
[https://www.amazon.com/Getting-MEAN-Mongo-Express-
Angular/dp...](https://www.amazon.com/Getting-MEAN-Mongo-Express-
Angular/dp/1617294756/ref=pd_sbs_14_t_0/135-4836281-8148542?_encoding=UTF8&pd_rd_i=1617294756&pd_rd_r=731aeb7a-f573-4c74-8b44-42a82466f47b&pd_rd_w=7Wdek&pd_rd_wg=atWWk&pf_rd_p=5cfcfe89-300f-47d2-b1ad-a4e27203a02a&pf_rd_r=KVEYMG98V3H2N9MCD3VZ&psc=1&refRID=KVEYMG98V3H2N9MCD3VZ)
This one is really good if you want to do a fullstack application using MEAN
stack.

------
tvalentius
Programming Game AI By Example

[https://www.amazon.com/Programming-Example-Wordware-
Develope...](https://www.amazon.com/Programming-Example-Wordware-Developers-
Library/dp/1556220782)

------
karmickoala
From Python to Numpy

[https://www.labri.fr/perso/nrougier/from-python-to-
numpy/](https://www.labri.fr/perso/nrougier/from-python-to-numpy/)

A book teaching Numpy vectorization.

------
PeterisP
Some years ago I was learning Ruby on Rails with the book 'Agile Web
Development with Rails', that was a project-based book, and it seems to be
released with an update for the recent versions of Rails.

------
the_decider
Data Science Bookcamp: 10 Python Projects

[https://www.manning.com/books/data-science-
bookcamp](https://www.manning.com/books/data-science-bookcamp)

------
vsundar
Apart from books, if you are open to tutorials, videos too, there was a
similar thread 2 years ago about write/build your own projects
[https://news.ycombinator.com/item?id=16591918](https://news.ycombinator.com/item?id=16591918).
That has some already mentioned here but also others (build your own react,
sinatra, redux created your own programming language, editor, make a lisp
etc). Both threads are now in my fav....hopefully some day.

------
vturner
Hope not too off topic, does anyone have books on building simple electric-
powered machines? I often have ideas for little machines for my garden or
cooking but have no idea how to go about selecting motors, controller boards,
designing strong enough parts for my 3D printer, etc. I'm not expecting an all
inclusive book for such a deep topic. A series or several books would be much
appreciated!

Used to love building robots with Legos as a teenager, but alas the real world
isn't so simple. ;)

~~~
sircastor
Make: Electronics is a good introduction to concepts, and discrete components
and how to use them. Lots of projects

------
thewhitetulip
I've written an intro to writing webapps in Go

[https://github.com/thewhitetulip/web-dev-golang-anti-
textboo...](https://github.com/thewhitetulip/web-dev-golang-anti-textbook)

Intro to python:

[https://github.com/thewhitetulip/build-app-with-python-
antit...](https://github.com/thewhitetulip/build-app-with-python-
antitextbook/)

Both are project based

------
joeyspn
Although I still use it professionally in some projects, I got over the
fullstack JS some time ago.

Now half way through this Phoenix book:

[https://pragprog.com/book/phoenix14/programming-
phoenix-1-4](https://pragprog.com/book/phoenix14/programming-phoenix-1-4)

Learning Elixir/Erlang/OTP has been a joy so far. It's a new and exciting
world in the middle of so much js fatigue.

------
tacon
Manning has an early access book in the works, "Data Science Bookcamp: 10
Python Projects"

"...you'll test and build your knowledge of Python and learn to handle the
kind of open-ended problems that professional data scientists work on daily."

[https://www.manning.com/books/data-science-
bookcamp](https://www.manning.com/books/data-science-bookcamp)

------
xenocratus
While AngularJS is outdated, this book helped me understand how these
frameworks do their job behind the scenes:

[https://teropa.info/build-your-own-angular/](https://teropa.info/build-your-
own-angular/)

Also, thank you for posting this question, these are the kind of books that I
yearn for when I want to understand how something works!

------
denieus
Growing Object-Oriented Software, Guided by Tests is a bit old, but still a
very nice book to read: [https://www.amazon.com/Growing-Object-Oriented-
Software-Guid...](https://www.amazon.com/Growing-Object-Oriented-Software-
Guided-Tests/dp/0321503627)

------
ejflick
Clojure for the Brave and True is a very fun project-based book. As someone
who struggles getting through technical books, I found this one a real joy and
it kept my attention to the very end.

[https://www.braveclojure.com/](https://www.braveclojure.com/)

------
devasiajoseph
I have created a couple of courses to learn web development from scratch by
actually working on a project.

[https://www.learnwithcoder.com/](https://www.learnwithcoder.com/)

It has currently Golang, Clojure & Clojurescript single page application
development courses.

------
e19293001
books by this author:
[http://cs.newpaltz.edu/~dosreist/](http://cs.newpaltz.edu/~dosreist/)

Assembly Language and Computer Architecture Using C++ and Java , Course
Technology, 2004

Compiler Construction Using Java, JavaCC, and Yacc, IEEE/Wiley, 2012

------
SadWebDeveloper
Whats the best book for learning about electronics, soldering, pcbs, fpga... m
looking for something more project based rather than here is 500 pages of
theory and some illustrations (like most of the books outhere) better if start
slow (with protoboards) and ends with fpgas.

~~~
colechristensen
I'm not sure there is a best, but different styles that appeal to different
people.

One prominent candidate is Horowitz's _Art of Electronics_. _Learning the Art
of Electronics_ is a hands on lab oriented course with one project per
chapter.

------
codazoda
My Splash of Code book teaches JavaScript to absolute beginners by walking
them through some type-in generative art projects. People really seem to enjoy
it, especially non-developers who are a little technical, such as designers,
scrum masters, and product owners.

Splash of Code by Joel Dare

------
rofo1
I can recommend
[https://www.railstutorial.org/book](https://www.railstutorial.org/book) for
Ruby on Rails. It's practical and concise and there's not a lot of unnecessary
fluff.

------
signa11
i find that cpu based ray tracing is a good low-to-moderate effort project,
specifically if you are getting into a new programming language f.e.
lisp/modern-c++/rust/erlang(^^)/...

there are plenty of books around which can walk you through the whole thing,
however, of late, i have found that this:
[https://pragprog.com/book/jbtracer/the-ray-tracer-
challenge](https://pragprog.com/book/jbtracer/the-ray-tracer-challenge) is a
pretty comprehensive.

check it out !

approximately, on the same lines, nand-to-tetris is _very_ good as well.

------
d4nyll
Hi Shosty123, thanks for mentioning my book! Really appreciate the love (:

------
jlelonm
VERY interested in "Building Enterprise JavaScript Applications"

I noticed that it was released Sept 2018. That's not _too_ old, but I'm
curious if there's a more up-to-date version.

~~~
pknopf
That's a funny joke. But really, I'm sure it's outdated.

There really shouldn't be any JS books in print...

~~~
d4nyll
Hello! Author here! The book introduces a lot of tools (~20) and these tools
are bound to get out of date eventually. As a matter of fact, the Babel
libraries moved from v6 to v7 during the writing process, and I've had to
painstakingly rewrite most of the book to keep itself updated.

But the core value of the book is not in the tools themselves, but the
concepts and principles of these tools, and how these tools work with each
other. And these don't get outdated as easily!

------
jisaacks
I wrote "get programming with JavaScript next" the whole "get programming"
series ends each unit with a let's build a project to encapsulate all these
ideas.

------
middlechild9
Definitely the
[https://www.railstutorial.org/](https://www.railstutorial.org/) to learn
Rails, Ruby, and web development.

------
pbh101
Cremdhaw’s ‘Let’s Build a Compiler!’

[https://compilers.iecc.com/crenshaw/](https://compilers.iecc.com/crenshaw/)

------
AlchemistCamp
The Realm of Racket.

------
patrec
[https://github.com/norvig/paip-lisp](https://github.com/norvig/paip-lisp)

------
barbecue_sauce
DIY Furniture: A Step-by-Step Guide

------
tima101
builderbook.org

------
tony
I believe one reason buying books is so popular is the reader leans the
direction of being spoon fed. How many times have we picked up books and never
actually read em?

My anecdote, since I already had projects in mind and just wanted to
synthesize how things were glued together A to Z: I went to
SourceForge/GitHub/BitBucket and cloned repos for projects for the language of
choice, build them, run the tests.

Also, [https://github.com/search](https://github.com/search) and lookup stuff
of similar topic / using the same libraries (words like MIT, ISC, Apache 2,
BSD are a good sign). Then check if it's permissively licensed. Also, in the
end, you likely won't ever end up forking or copying. You're just getting the
knowledge of how it's glued, and probably will wire stuff in uniquely for your
case.

Building these projects in itself teaches the ropes of getting an environment
setup (googling build errors, checking issue tracker), dependencies, test
suites, and building a production-ready package.

I kept the best projects I found at [https://github.com/tony/.dot-
config/blob/master/.vcspull.yam...](https://github.com/tony/.dot-
config/blob/master/.vcspull.yaml). Purely for studying the source of.

Python : Flask, Werkzeug, Django, SQLAlchemy

JS : Express, Backbone, blog posts by Addy Osmani and JS enterprise
architecture and Derick Bailey on Marionette (but i don't think the backbone
would be as relevant today, it def paved the way to modern frontend we see
today)

C++ : OpenTTD

In the end, there weren't many books I found espoused building projects. I
already had an idea of what to build - I just needed enough to "ramp up", but
if you want books:

JavaScript Patterns: Build Better Applications with Coding and Design Patterns

Examples applied directly to the task at hand. All about scoping.

A python book, that hits different areas than this JS book would be _The
Hitchhiker 's Guide to Python_: [https://docs.python-
guide.org/](https://docs.python-guide.org/)

C++: Scott Meyer books are great

General programming: Code Complete

