Curate and maintain a list of recommended books #1

Open
opened 2022-07-20 14:44:46 +00:00 by rjurga · 3 comments

Hi. Here is a small contirbution proposition. I'd like to know what you think of it. Details below!

Motivation:

Why books:

I think books are underrated in the HMN community. Yet, there are a few people who prefer learning from books rather than from articles, tutorials, twitch streams, guides, etc. Some strong points for (good) books are:

  • They cover topics comprehensively.
  • They follow a consistent presentation style throughout.
  • They work well as references, i.e. to consult information on a topic one already knows.

They also have downsides, such as being expensive. Nontheless, I think an HMN educational resource should contain book recommendations targeted at learners who prefer them.

Having expressed why I'm interested in books, here is a justification for why a curated list of recommendations would be useful. I will quote Jonathan Blow: "Be very careful about who you learn from." (source, the few minutes of videos at that timestamp are worth watching in my opinion). There are many books out there, and not all of them are good. It is actually fairly difficult to find the good ones.

It's hard to find good books, how-to:

Here is what worked well for me. When I look for a new book to read, I always first turn to the books that the great practicioners in the field themselves recommend.

There is a website entirely built around this idea that I found helpful in the past: https://fivebooks.com/ On there, you have various "experts" (yeah, I put that in quotes) who recommend five books from their field. It's severly lacking for handmade style programming though.

In practice, I find many recommendations by digging deep in obscure Twitter threads where some knowledgeable people participate. I happen to have bookmared a few of them which I will share here to illustrate. An important point here is that very few people see these recommendations, Twitter threads don't stay in the spotlight very long and have low searchability. This is another reason why I think curating a list would be so useful.

Some people have curated lists on their own websites (these are my favorite kind of websites!), such as Christer Ericson's.

The HMN community itself has many knowledgeable people that like some books. I've seen bvisness, Abner, and many other (including myself) recommend CS:APP. Martins sometimes recommends books (I recall him recommending https://beginners.re/).

Potential issues:

Curating such a list is not easy if we want it to be useful.

Too few books might give the impression that they have been chosen very carefully to be the definitive top books to read, and that omissions are unworthy. The reality is that no matter how many curators participate, they can't possibly have read and judged every book, so omissions should be expected and a disclaimer saying as much might be useful. Furthermore, no one book matches every learning style, different readers might prefer different books. In most cases the idea that there might be a definitive book to recommend for a topic seems restrictive.

On the other hand, too many books might make the list overwhelming, lead to decision paralysis, and end up including lower quality books. One example that comes to mind is the list on the Real-Time Rendering website, especially all the recommendations that don't have a short review attached.

Proposed methodology:

So how could a decision to include a book in the list be made? I don't know of any perfect procedure for this kind of thing, and if the proposal is considered, then this will likely be the point to be discussed further and elaborated.

I think it obvious that no book should be added without it having first been read by one of the curators. There should be a well-written short review accompanying the recommendation. If the book was recommended by someone well known publicly, an additional link to the original recommendation could be provided.

Who could be a curator? In principle, anyone from the community could. That doesn't mean every suggestion should be accepted, it should satisfy some of the criteria above. Ultimately, we're a community and I would find it fitting for the process to be collaborative.

Before overthinking this aspect, I would like to know what you think of the idea itself. I focused on making the case for books, but ultimately it's just one kind of resource. I'm sure the same case could be made for curating a list of videos, of courses, and many other kind of external resources. I never had the chance to see The Library while it existed, and I imagine that this is what it was. If so, this is a proposal to bring it back.

Hi. Here is a small contirbution proposition. I'd like to know what you think of it. Details below! ## Motivation: ### Why books: I think books are underrated in the HMN community. Yet, there are a few people who prefer learning from books rather than from articles, tutorials, twitch streams, guides, etc. Some strong points for (good) books are: * They cover topics comprehensively. * They follow a consistent presentation style throughout. * They work well as references, i.e. to consult information on a topic one already knows. They also have downsides, such as being expensive. Nontheless, I think an HMN educational resource should contain book recommendations targeted at learners who prefer them. Having expressed why I'm interested in books, here is a justification for why a curated list of recommendations would be useful. I will quote Jonathan Blow: "Be very careful about who you learn from." ([source](https://www.youtube.com/watch?v=lcF-HzlFYKE&t=955s), the few minutes of videos at that timestamp are worth watching in my opinion). There are many books out there, and not all of them are good. It is actually fairly difficult to find the good ones. ### It's hard to find good books, how-to: Here is what worked well for me. When I look for a new book to read, I always first turn to the books that the great practicioners in the field themselves recommend. There is a website entirely built around this idea that I found helpful in the past: https://fivebooks.com/ On there, you have various "experts" (yeah, I put that in quotes) who recommend five books from their field. It's severly lacking for handmade style programming though. In practice, I find many recommendations by digging deep in obscure Twitter threads where some knowledgeable people participate. I happen to have bookmared a few of them which I will share here to illustrate. An important point here is that very few people see these recommendations, Twitter threads don't stay in the spotlight very long and have low searchability. This is another reason why I think curating a list would be so useful. * https://twitter.com/ID_AA_Carmack/status/1427808557790076931 * https://twitter.com/ID_AA_Carmack/status/1412893340010520578 * https://twitter.com/mike_acton/status/1016755729892429824 * https://twitter.com/kenpex/status/1044731457078349824 * https://twitter.com/pervognsen/status/1345289133699207168 * https://twitter.com/m_ninepoints/status/1215429892344430593 Some people have curated lists on their own websites (these are my favorite kind of websites!), such as [Christer Ericson's](http://realtimecollisiondetection.net/books/list/). The HMN community itself has many knowledgeable people that like some books. I've seen bvisness, Abner, and many other (including myself) recommend CS:APP. Martins sometimes recommends books (I recall him recommending https://beginners.re/). ## Potential issues: Curating such a list is not easy if we want it to be useful. Too few books might give the impression that they have been chosen very carefully to be the definitive top books to read, and that omissions are unworthy. The reality is that no matter how many curators participate, they can't possibly have read and judged every book, so omissions should be expected and a disclaimer saying as much might be useful. Furthermore, no one book matches every learning style, different readers might prefer different books. In most cases the idea that there might be a definitive book to recommend for a topic seems restrictive. On the other hand, too many books might make the list overwhelming, lead to decision paralysis, and end up including lower quality books. One example that comes to mind is [the list on the Real-Time Rendering website](https://www.realtimerendering.com/books.html), especially all the recommendations that don't have a short review attached. ## Proposed methodology: So how could a decision to include a book in the list be made? I don't know of any perfect procedure for this kind of thing, and if the proposal is considered, then this will likely be the point to be discussed further and elaborated. I think it obvious that no book should be added without it having first been read by one of the curators. There should be a well-written short review accompanying the recommendation. If the book was recommended by someone well known publicly, an additional link to the original recommendation could be provided. Who could be a curator? In principle, anyone from the community could. That doesn't mean every suggestion should be accepted, it should satisfy some of the criteria above. Ultimately, we're a community and I would find it fitting for the process to be collaborative. Before overthinking this aspect, I would like to know what you think of the idea itself. I focused on making the case for books, but ultimately it's just one kind of resource. I'm sure the same case could be made for curating a list of videos, of courses, and many other kind of external resources. I never had the chance to see [The Library](https://handmade.network/library) while it existed, and I imagine that this is what it was. If so, this is a proposal to bring it back.
Owner

I would love to have books in our education initiative, and I like your suggestion to accompany the book with a curator recommendation. This is actually pretty close to what we're intending for the broader structure of our education initiative, so it would be a good fit.

At the moment, my big question is how we would organize things. CS:APP is a great book, but the biggest failing of the previous library was that it didn't have a guiding structure, or an audience in mind, or an idea of what was a good fit and what was not. It became something of a dumping ground, hard to navigate if you wanted to learn about a topic. Our new approach is different; we're choosing specific common topics and then structuring "curriculum" around them. Each resource is chosen for a reason, to fit a particular point in the reader's learning process. This is good, I think, but it does make it hard to place books of general interest.

I'll ponder what we can do about this. Certainly we can and should put books into our educational courses wherever they fit. (I think we are, in some cases, for example in our article about compilers.) But I think it also might just be good to have a list of books, meaty books, separate from articles and stuff, substantial enough to pursue on your own without needing someone to structure a course for you.

As a heads up, we probably won't act on this idea until the fall, after the education initiative is launched and we've had some time to respond to feedback.

By the way, for the time being you can actually access our old library content via the Internet Archive: https://web.archive.org/web/20210614191250/handmade.network/library

I would love to have books in our education initiative, and I like your suggestion to accompany the book with a curator recommendation. This is actually pretty close to what we're intending for the broader structure of our education initiative, so it would be a good fit. At the moment, my big question is how we would organize things. CS:APP is a great book, but the biggest failing of the previous library was that it didn't have a guiding structure, or an audience in mind, or an idea of what was a good fit and what was not. It became something of a dumping ground, hard to navigate if you wanted to learn about a topic. Our new approach is different; we're choosing specific common topics and then structuring "curriculum" around them. Each resource is chosen for a reason, to fit a particular point in the reader's learning process. This is good, I think, but it does make it hard to place books of general interest. I'll ponder what we can do about this. Certainly we can and should put books into our educational courses wherever they fit. (I think we are, in some cases, for example in our article about compilers.) But I think it also might just be good to have a list of _books_, meaty books, separate from articles and stuff, substantial enough to pursue on your own without needing someone to structure a course for you. As a heads up, we probably won't act on this idea until the fall, after the education initiative is launched and we've had some time to respond to feedback. By the way, for the time being you can actually access our old library content via the Internet Archive: https://web.archive.org/web/20210614191250/handmade.network/library
Owner

By the way - if you want, let me know your Discord username and I'll add you to the Discord channel where we're discussing the education initiative!

By the way - if you want, let me know your Discord username and I'll add you to the Discord channel where we're discussing the education initiative!
Author

At the moment, my big question is how we would organize things. CS:APP is a great book, but the biggest failing of the previous library was that it didn't have a guiding structure, or an audience in mind, or an idea of what was a good fit and what was not. It became something of a dumping ground, hard to navigate if you wanted to learn about a topic. Our new approach is different; we're choosing specific common topics and then structuring "curriculum" around them. Each resource is chosen for a reason, to fit a particular point in the reader's learning process. This is good, I think, but it does make it hard to place books of general interest.

I like the new approach.

For CS:APP in particular, it seems like a very foundational kind of book for anyone who wants to learn low level programming. So indeed, it's not the kind of book that would nicely fit only with a very targeted topic, or maybe it would fit with every topic.

Here is a screenshot from the slides of the first lecture of the CMU course based on the book:

image

So it is a prerequisite for almost any more advanced low level topic at that university.

Still about CS:APP (I'm using it as an example to brainstorm things), one of the things that would be pretty useful to mention in a review, regardless of the topic where it fits, would be that it assumes a Linux working environment for the examples, exercices and projects. I would be pretty bummed to discover that only after buying a ~$100 book if I never used Linux before!

I'll ponder what we can do about this. Certainly we can and should put books into our educational courses wherever they fit. (I think we are, in some cases, for example in our article about compilers.) But I think it also might just be good to have a list of books, meaty books, separate from articles and stuff, substantial enough to pursue on your own without needing someone to structure a course for you.

Overall, there's no doubt that having structure is supperior to merely a list. There's also a middle ground, where the list of resources can be somewhat structured too. As an example, this website comes to mind, which does something like that https://teachyourselfcs.com/

But having read about your idea of separating things by topics, I think it's better. If we can find a way to make more generic/foundational resources fit in, it would be nice.

By the way - if you want, let me know your Discord username and I'll add you to the Discord channel where we're discussing the education initiative!

polomi#0396

> At the moment, my big question is how we would organize things. CS:APP is a great book, but the biggest failing of the previous library was that it didn't have a guiding structure, or an audience in mind, or an idea of what was a good fit and what was not. It became something of a dumping ground, hard to navigate if you wanted to learn about a topic. Our new approach is different; we're choosing specific common topics and then structuring "curriculum" around them. Each resource is chosen for a reason, to fit a particular point in the reader's learning process. This is good, I think, but it does make it hard to place books of general interest. I like the new approach. For CS:APP in particular, it seems like a very foundational kind of book for anyone who wants to learn low level programming. So indeed, it's not the kind of book that would nicely fit only with a very targeted topic, or maybe it would fit with every topic. Here is a screenshot from the slides of the first lecture of the CMU course based on the book: ![image](/attachments/71c0cfcd-b3c0-4400-80c9-7c4da74cee07) So it is a prerequisite for almost any more advanced low level topic at that university. Still about CS:APP (I'm using it as an example to brainstorm things), one of the things that would be pretty useful to mention in a review, regardless of the topic where it fits, would be that it assumes a Linux working environment for the examples, exercices and projects. I would be pretty bummed to discover that only after buying a ~$100 book if I never used Linux before! > I'll ponder what we can do about this. Certainly we can and should put books into our educational courses wherever they fit. (I think we are, in some cases, for example in our article about compilers.) But I think it also might just be good to have a list of books, meaty books, separate from articles and stuff, substantial enough to pursue on your own without needing someone to structure a course for you. Overall, there's no doubt that having structure is supperior to merely a list. There's also a middle ground, where the list of resources can be somewhat structured too. As an example, this website comes to mind, which does something like that https://teachyourselfcs.com/ But having read about your idea of separating things by topics, I think it's better. If we can find a way to make more generic/foundational resources fit in, it would be nice. > By the way - if you want, let me know your Discord username and I'll add you to the Discord channel where we're discussing the education initiative! polomi#0396
168 KiB
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: hmn/education-2022#1
No description provided.