Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What are some books where the reader learns by building projects?
852 points by Shosty123 on Feb 11, 2020 | hide | past | favorite | 178 comments
A continuation of https://news.ycombinator.com/item?id=13660086 which has been incredibly useful to me.

I recently finished this phenomenal book called "Building Enterprise JavaScript Applications":


Which takes the reader from zero to building a non-trivial production fullstack application with JavaScript. I also recommend "Building Git". The title is self-explanatory:


Other resources:



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.)

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

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.

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!

Thanks for the link!

I would second this.

There is a great WW2-era training film from the US military on how rifles work.

Don't want to link it as I am at work, but it's on YouTube.

It follows the same philosophy--start with a tube. Add a bolt. Add a trigger. Add a magazine. Etc.

This is a transferable pedagogy. Want to learn a complex system? Start at the sources of the system graph and make your way to the sinks.

I would love to know the name of this book, sounds perfect for learning about combustion engines.

I'm hoping someone else remembers it and furnishes the title.

I was a kid when I read it, and the book was already old, so publication date circa 1970-80. Best I can do. I trawled through book cover images but no love.

- - - -

edit to add: It's probably "Auto Mechanics Fundamentals" by Stockel. I'm still looking for pictures of the insides of the book, but going by what I can see here, it's very likely:


The typography matches my memory, and the description in the introduction sounds spot on, eh? Cheers!

Is this it? Looks to be around the right time frame, and the reviews mention exploded view diagrams https://www.amazon.com/Auto-Mechanics-Fundamentals-Construct...

I bought a copy of "Auto Mechanics Fundamentals" based on this thread and I think it is definitely the book you're remembering. The exploding can image you describe is on page 9 and the first chapter builds up an engine from first principles like you've talked about. Thank you for recommending this, it's a great resource!

How Cars Work by Tom Newton OR Auto Mechanics Fundamentals by Martin T. Stockel


Just going by description and the "red book" it seems like its Auto Mechanics Fundamentals:

>>> "It is the aim of Auto Mechanics Fundamentals to provide a thorough understanding of the design, construction and operation of automotive units. Each unit is approached by starting with basic theory, then parts are added until the unit is complete. By following this procedure, the function of each unit is explained, and its relationship to the complete car is made clear. Hundreds of illustrations were drawn especially for this text. Important areas are featured in these drawings, and many are exaggerated to place emphasis on parts being discussed. Unfamiliar words are defined immediately following the words. In addition, the Dictionary of Terms in the back of the book defines more than 1,100 terms..."


(This one is blue but there is another version in red)

I just previewed a few pages from "How Cars Work", and it listed this 'money saving tip' that I found pretty funny: "Don't ... make eye contact with police officers while driving"

Nice! My parents have this book, and I read some of it as a teen!

Internal Combustion Engines by Ganeson

Commenting to save this one.

If you want to save for the future, you can just "favourite" the comment. If you don't see the favourite link, click on the timestamp to see the comment in its own page, and it should be there. You can also favourite the whole thread.

+1 - I want to come back to this thread and read things.

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.

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

Hey a couple of questions if you don't mind.

1. Like the other user asked, is it possible to adjust your prices for countries according to PPP? I was able to purchase Wes Bos's course like that for learning javascript and more.

2. How complex/difficult have your exercises evolve into? Can you give any examples?

Do you provide discounts for third world country developers?

I think there might be an issue with your FAQs section. I couldn't see the answers and it redirects me to "https://www.masterywithsql.com/#", taking me back to the top of the page.

The course looks very cool by the way.

Does it have you write queries that exceed 30 lines?

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 Build a 6502 computer: https://eater.net/6502 Let’s build a video card: 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.

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.

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.

Do you just follow along with the videos or did you buy the kit as well? That 8-bit computer series looks great.

I haven’t bought the kit yet, but I’m going to in the near future.

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.


The online course that I took made a college class on logic gate echelon stuff an absolute cakewalk to me, and fully familiarized me with a lot of the concepts in "the hard way" (doing it), so that I was ready to learn the tips and tricks later. I cannot second this recommendation enough.

This book was amazing since it had you starting at the transistor level, building gates, components, the entire CPU/RAM, ASM, and finally building a mini OS to run on the entire platform.

Could not recommend enough.

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

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].

Glad to see this here. Really took away a lot of the "magic" that intimidated be about the lower level operations of computers.

There's a good web app companion to the first half of this course at http://nandgame.com/ as well.

Second this, great book.

I was here just to add this book if not added.

I found 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!

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

I've been making my way through "Writing an Intepreter in Go" and "Writing a compiler in Go" 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 :)

On a smiliar note, but with Java and C, "Crafting Interpreters" - https://craftinginterpreters.com/

On similar topic, back in school we followed "Modern Compiler Implementation using ML" by Andrew Appel. Pretty good book, which teaches good amount of theory, but also has a project where you implement pieces of compiler as you progress through the book. Its fairly challenging, as you will generate assembly (MIPS) instead of just interpreting and apply various optimizations (and register allocation) in the end.

Its not exactly from scratch as there is some boilerplate code to keep you focused on concepts. It was quite fun, except I didn't really like working with SML (OCaml would have been nicer IMO, and I think you can choose to use that by finding the ported boilerplate on Github). Also has C and Java versions of this book.

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.

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

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

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

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.


Initiative: A Proven Method to Bring Your Passions to Life (and Work) https://www.amazon.com/Initiative-Proven-Method-Bring-Passio...

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. 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-....

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.

Hi Josh - I picked up your book after seeing the review and was really impressed with the high marks from everyone! I have started working through the book, but I am having a hard time applying towards my domain - which is to create audiovisual art and hopefully be successful in selling it. The steps in the book seem primarily focused toward creating a project that fits in business or traditional job culture.

I could come up with "problems" around this artistic space, but that defeats the drive to create the art. The real struggle in applying this method is that I don't see creating art as "solving a problem" that other people have.

Do you have any suggestions for modifying the initiative method to fit my area? Thanks in advance!

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.

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?

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

That's a lot of 5 star reviews, and a topic I am struggling with right now. Picked up a copy. Thanks, and look forward to reading it.

Glad to hear. Let me know how it goes and if I can help.

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.

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)


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

As it should be; I dislike when books are dogmatic a out setup. Those pages are usually out of date at by the time the book is in print.

Does it assume I know SQL though?

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

I wonder how this compares to another suggestion here


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.


(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.)

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

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):


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.

* The Rails Tutorial - 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...

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.

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.

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


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.


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


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


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.


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.

I got the first two from the On sale section. Sounds amazing.

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

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.

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....

1. that link returns a 404.

2. Do you have a TOC or expected date for this to be out? Extremely interested!

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


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

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.

Well, I'm interested and will purchase this.

- Practical Common Lisp

- Land of Lisp - http://landoflisp.com/ - watch the video, it's hilarious

- Build Your Own Lisp - 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 - learn any language, by making a lisp in that language

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

As a rule, I only read lisp books

write yourself a scheme in Haskell is also good for learning haskell

+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.

- Automate boring stuff with Python: https://automatetheboringstuff.com/

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

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). 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.

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

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

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/

The github is at https://github.com/hundredblocks/ml-powered-applications

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/

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.

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 (ymmv, that repo has 4 stars, so I dunno :)

Not OP but it could be difficult learning two languages and frameworks at the same time. If you really want to use Python for the backend while learning React, perhaps try Flask? It's much simpler than Django, especially for tutorial-type projects.

Code: The Hidden Language of Computer Hardware and Software


From binary to a full computer

This book made me understand pointers. As I read it, I followed along building all the circuits in Logisim [1] from half-adders to latches to multiplexers all the way up to a full CPU.

Many will probably recognize the author, Charles Petzold [2], from his Windows programming books.

[1]: http://www.cburch.com/logisim/

[2]: https://en.wikipedia.org/wiki/Charles_Petzold

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

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

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

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/

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.

For Rust, try 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!

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


For Flask there's 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.

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


Surely if you're interested in another language suitable for writing an OS, translating from rust shouldn't be very difficult.

The other way around might be, as rust semi-intentionally makes it difficult to do things like linked lists or big mutable graphs that other languages encourage.

But rust->c should be fairly easy if you know c and the book teaches enough rust. Sum types get replaced with null and unions, traits get replaced with functions that take that type, etc...

haha, why?

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.

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?

I wrote Nim days: 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

"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.

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


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.

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.


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)

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

not sure if this fits the bill but Car Hacker's Handbook by OpenGarages 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.

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

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

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.


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



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, which is similar to the project-based-learning link that you posted.

Black Hat Go -- Excellent book!

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

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.

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

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 pythoncrashcourse2e

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

Lots of interesting (smaller) projects in D Cookbook:


More substantial is the Linux from scratch series:


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

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.

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!

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...

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.


Manning - Getting MEAN with Mongo, Express, Angular, and Node https://www.amazon.com/Getting-MEAN-Mongo-Express-Angular/dp... This one is really good if you want to do a fullstack application using MEAN stack.

From Python to Numpy


A book teaching Numpy vectorization.

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.

Data Science Bookcamp: 10 Python Projects


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. 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.

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. ;)

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

I've written an intro to writing webapps in Go


Intro to python:


Both are project based

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:


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.

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."


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


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!

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...

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


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

books by this author: 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

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.

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.

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

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

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 is a pretty comprehensive.

check it out !

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

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

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.

I didn't find it too out of date. I used the latest versions of everything and the only thing I had to update myself was the React section for the frontend to use hooks. Packt books regularly go on sale for $5-$10 so you can also wait for one of those.

And even then, I'm guessing you didn't have to update it, right? The code (classes I'm guessing?) probably still worked.

In any case, thanks for the feedback!

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

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

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!

You think so? I figured maybe 10-20% of it was out of date, but that it was still probably worth buying. Still looking for alternatives, but considering it.

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.

Definitely the https://www.railstutorial.org/ to learn Rails, Ruby, and web development.

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


The Realm of Racket.

DIY Furniture: A Step-by-Step Guide


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.

This is a great series of books (he has essentially the same book for early DX9, DX9 with shaders, and DX12). Particularly if you want to learn DX12, going through the DX11 book first and then the DX12 book is great because you can really see where things are different.

I wish that there was an equivalent for learning OpenGL or Vulkan.

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

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.

I think I read his D3D8 book.

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 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.... 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/

C++: Scott Meyer books are great

General programming: Code Complete

Applications are open for YC Summer 2021

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact