Hacker News new | past | comments | ask | show | jobs | submit login
Freely available programming books (github.com/vhf)
239 points by hitr on July 5, 2016 | hide | past | favorite | 36 comments



I'm the author and maintainer of this project, which seems to end up here once a year.

Since I don't want to answer to every post suggesting something, I'll do it here: I know we could do better in terms of curating this content.

I would be very happy to discuss ideas towards the goal of better curation of these lists. Please open an issue on github or shoot me an email!

I also have to say I started this thing 3(?) years ago, and today I have less and less time to take care of it. I closed around 1800 PRs, which means almost 2 per day over the last years. I'm extremely grateful to the contributors helping me maintaining this and I'm glad it's been useful to a couple million people (according to the stats). Should anyone serious want to contribute in a more involved way, please step forward, I could really use some relief. :)

My email is on github, my twitter is in my HN profile.


Take note that this list seems to include any book, regardless of how old it is and how bad its contents are now, 10+ years later.

Before investing time in any of these, do yourself, and the world, a favor and find the community of the language and ask them if the book you found on that list is shit.


Let me add a tiny suggestion: sometimes even old, and obsolete has value. There might be an intermediate step in the paradigm or exercise that will suit your mind better. For instance: I failed twice at the calculating change problem in courses (Coursera, SICP). I find a variant in an old Caml problems book, that made me able to revisit the change problem and solve it on my own.

Seek for stimulation and keep growing. Cheers.


Totally agree, and I'll piggyback this to say that the quality is not always too important either. Worrying about whether the book you are learning from is "the best" is not as productive as getting on with learning the language. A book really only has to good enough not to teach bad habits or explain concepts incorrectly.


75% of all Perl books teach bad habits and explain things incorrectly. I didn't use the word "shit" up there lightly.


I guess Perl is kind of a special case :) I got up to speed by reading half of some fairly old Perl book, then reading most of Modern Perl.


You'd be guessing badly. https://news.ycombinator.com/item?id=12036826

I've also had similar experiences with Java, nevermind Javascript.

It is an utter and simple fact that due to tech being an everchanging landscape, any book more than a few years old is going to teach bad habits or explain concepts incorrectly.


>It is an utter and simple fact that due to tech being an everchanging landscape, any book more than a few years old is going to teach bad habits or explain concepts incorrectly.

Concepts change meaning and good habits turn bad every few years?

Shitty books are shitty, OKish books will be probably be fine for a language intro, even if they are old.


That's why I like old books at libraries. They were from a time where the research / book ratio was better. People in research centers didn't write about trivial stuff. That's why math is so nice (when you can parse it), very general and aiming at timeless.


Based on Sturgeon's Law [1] then, Perl books are doing fairly well.

[1] https://en.wikipedia.org/wiki/Sturgeon%27s_law


Recently read the phrase 'don't optimizing for comfort'.


This is my gripe with laundry list GitHub repos (see most "awesome-X" repos). People just make them for the stars and "fame" and have no intention of curating or reviewing.


Totally agree with you on this point (not the OP's link specifically, but the awesome-x trend in general), too many of them add craploads of crappy links just for the sake of a high number.

Maybe it's just that my learning style is different from the majority's but I don't see much benefit in a massive dump of links. The idea and the intention of a community curated list on learning resources is good and lovely, it's just that github is not suitable for this.


I agree with you: github is not suitable for this.

When I created this github repo, it was because stack overflow wasn't suitable for this. Then I created a website (the now defunkt resrc.io) which could pull these kind of lists from github, parse the links, have them tagged in a database, parse the link content, make it searchable, etc.

It still wasn't suitable. And I'm still looking for a suitable way of curating such lists, be it on github or anywhere else.


I checked the link from the archive https://web.archive.org/web/20140701160526/http://resrc.io/ and from what I can see, it looks like the main issue (vetting of the links) wasn't really solved. That's the main issue with the awesome-x, from my perspective. Most of the people don't really need to read 5 books on basic Python, nor have the time to do so (trying to read a few books and dropping some is also time consuming).

Having tons of options sometimes seems cool when just checking or looking around, but when you actually need to use/learn something it's usually much better to have a couple (at most) of vetted resources that you can trust. Especially for the basic things, where there are countless of books, blog series, online courses. The paradox of choice, sort of. That would actually take 'community curated' to the next level.

The way I imagine this format working is having lists and sublists (loosely made of awesome-x repos) and each link having a upvote/downvote/report button. While the voting system would reside outside the github, every link could in github could have a widget next to it, similar to build status widgets. Well, you could implement voting using issues and reactions but that seems like a really messy way to do something. If widgets with score wouldn't exist, it would be extremely hard to convince the users to go to yet another web site.


That might work. What I do with https://github.com/tedyoung/awesome-java8 is require a few sentences for each submission that's describing what makes it useful and/or different from what's already available. Curation is definitely work, and kudos to @vhf for keeping up with it, but setting a higher-bar for entry can help (unless your goal is to just amass a bunch of links).


Wow. This is an awesome idea, and a very easy one to implement. I'll think about it. :)


Awesome! Drop me an email (in my profile) if you want to talk/brainstorm/share progress, would love to hear about it :)


Yes this is why I personally avoid such lists. Take for eg the Django books: anything below 1.8 is officially unsupported and you should definitely not be learning.

A quick question on #django on freenode about best learning resource and people will always reply with "first, the official tutorial, then maybe django-girls tutorials"


Hard to have a voting mechanism on Github. Stack Overflow isn't really suited for this either. They try to do it with this question, but even that is hard to do: http://stackoverflow.com/questions/562303/the-definitive-c-b...


In that case, it would be helpful to have a Github list of links to language communities for quick reference.


I agree this needs to be better organized or curated. Cobbling together 2000 lines of books is not the easiest to consume.


Probably an easy way to do it, would be to run the book title through hacker news comments and programming language subreddits. Count up the number of references. That at least would give you an idea of how often a book is mentioned.


You'd need to normalize against the age, since some books have over 20 years of recommendations despite having been outdated 18 years ago.


OpenLibra, although spanish oriented, has also a good collection in english.

https://openlibra.com/en/collection/search/language/english/


Now this is good resource! Thank you! I just found a book about Arduino I wanted to add into my list of fun experiments with Ardunio board.


Register at Packtpub, then open this link:

https://www.packtpub.com/packt/offers/free-learning

You get a new book every day, although sometimes they offer books that are already offerend months ago. The downside is that you need to do this every day, and you need to bookmark this link.

They don't cover all subjects, but do have a lot of programming. I don't say these are the best books, but in general they are interesting.


Honestly, Packt has the worst signal-to-noise ratio of tech publishers out there. I know it depends on the author and reviewer but I've had plenty of bad reading experiences. Even if they're free they still cost your time.

That said, the book featured today (Node Design Patterns) is worth a quick read.


>>> Even if they're free they still cost your time.

This. Free books are very far from being actually free. Reading a book can take anywhere between 15 to 50 hours or more. So the cost of the book itself often is a small share of the cost of reading a book.

Of course, free books are important because they are more accessible to people who can't pay for some reason (teenagers, students, people from poor countries). It's just that 'free' shouldn't be part of the equation, if you can afford to pay $20 or $50 for a book.


The book that was free yesterday is not free today. If you haven't claimed it yesterday, you have to pay now. So it's a temporary offer.

If I need a book, I'm willing to pay for it. But sometimes these books are nice offers. That's all. It's one option you have, nothing more. If O'Reilly offers a better book, then I'll buy that.


> The downside is that you need to do this every day, and you need to bookmark this link.

This sounds like something that could easily be automated with a script and a cron job.


thanks! will clone this


yayyy!!! Awesome list! I am glad that my book about Firefox OS is there as well. Thanks for gathering them all.


Thanks ! That's a good way to start the day :)


This is gold! Thanks a lot for sharing!


Always great to have these on hand, great for sharing with friends interested in the subject as well.

Thanks OP




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

Search: