Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What's the best technical eBook you have read?
193 points by davidshariff on July 7, 2014 | hide | past | favorite | 82 comments



Two books

1. Learn you some erlang (http://learnyousomeerlang.com/)

Why?

Because it is written in a style in which technical books are rarely written. It has cartoons, jokes, references to pop culture but still it conveys the core subject exceedingly well. I understand that this is written in style of learn you some haskell so I am going to read that as well at some point. The best part is you can read the book second or third time and still have fun.

2. Joe Armstrong's thesis(http://www.erlang.org/download/armstrong_thesis_2003.pdf)

Yes it is another erlang book but it is written so well! I don't read thesis (or to be perfectly honest I try reading them but I can't understand most of them and lose interest after some time) but somehow I Joe's thesis made sense to me. It might be because of his clear writing style I can't say. But every time I read this book I find a certain phrase that sticks with me while I am writing programmes. Joe is a quote machine :)

3. Essays in the art of writing by R.L stevenson (http://www.gutenberg.org/files/492/492-h/492-h.htm)

Just read the opening paragraph and see for yourself if you don't want to read any more :)


thanks for the pointer to the thesis. stared in '81 and submitted in 2003, wowza !!!


This book profoundly changed how I look at computers (and other things).

http://www.charlespetzold.com/code/

Petzold's style is narrative, but make no mistake: every sentence is carefully chosen. I recommend resisting the urge to skim, lest you have to backtrack later...


NB the diagrams weren't legible in the Kindle version I paid for (some years ago; hopefully it's been updated). The diagrams were fine in the PDF version that I found somewhere.


I concur, as strongly as I can, with this. This book gave me sight in a lot of areas I in which I was previously blind. Also, I couldn't put it down. I was high on insight the entire time I read it. I should point out, though, that while I did already program when I read this, I hadn't taken any CS courses, so YMMV. That being said, this book was enough to get me on the path to self-taught assembly and embedded programming.


I never got all the way through this book. Started reading it and loved it. The narrative and conversational style is very welcoming. At the time I had a friend who was starting to learn programming so I loaned it to him hoping it would help/inspire him.

I had completely forgot I owned this book, thanks for reminding me! My friend has since given up on programming so I'll definitely get it back :)


100%. The advice against skimming is sound. Read this like you would read the bible if you were a priest.


God yes. This is the only book about computers that I recommend to my non-technical family and friends. It is the only way I've found for people to understand the love of computing as opposed to just understanding why it may be a good job.


Beautifully crafted book, i've read it a few months ago and i would have loved something like this when i was in high school (i still enjoyed it, even if there wasn't much i didn't already know).


Thanks for reminding me of this one. I had a brief skim of this years ago when I was short on money and time. Now with a bit more of both I have ordered a paperback copy.


Eloquent Javascript : A Modern Introduction to Programming by Marijn Haverbeke http://eloquentjavascript.net

Imho, the first chapter is a must-read for anyone in the industry, even and maybe especially if not a developer.

"When a program works, it is beautiful. The art of programming is the skill of controlling complexity. The great program is subdued, made simple in its complexity."

... and also, maybe not as "mindblowing" as Eloquent Javascript, but really good for diving deep in a low-level land (yet made very accessible in this book) that is probably overlooked by most of us when optimizing a web app for speed :

High-Performance Browser Networking by Ilya Grigorik http://chimera.labs.oreilly.com/books/1230000000545/index.ht...


Surprised it hasn't been mentioned yet. Hands down the most eye opening technical book I've read is SICP.

http://mitpress.mit.edu/sicp/

http://sicpebook.wordpress.com/ebook/


Also, you can go through the UC Berkeley SICP course for free: http://www-inst.eecs.berkeley.edu/~cs61a/fa13/

I'm going through it now, on my own, and it's an awesome course.


Also, this: http://www-inst.eecs.berkeley.edu/~cs61a/su14/

...It started in late June and the Final is in August.


Are there any video lectures to this?


thank you for the second link :)


The Pragmatic Programmer. My suggestion: don't read another book until you've read this.


About to finish Snow Crash and looking for a new book. I think I'll make it this one.


The Architecture of Open Source Applications series is a great read. It is mostly written by project creators and contributers and freely available on-line: http://aosabook.org/


The Early Preview of '500 Lines or Less' by AOSA: https://github.com/aosabook/500lines


I enjoyed "Advanced Programming in the UNIX Environment" back when there we had multiple UNIX operating systems and probably more versions of standards than operating systems. Stevens carefully documented every detail (in a way where you could learn about what was going on; I also had the POSIX standards at the time which were not readable).

The book had some nice typesetting which I believe was done in the mystery language also used for man pages.


He used troff:

"Real Unix books are written using troff and this book follows that time-honored tradition. Camera-ready copy of the book was produced by the author using the groff package written by James Clark. Many thanks to James Clark for providing this excellent system and for his rapid response to bug fixes. Perhaps someday I will really understand troff footer traps."

http://www.troff.org/pubs.html#apue


> I enjoyed "Advanced Programming in the UNIX Environment" back when there we had multiple UNIX operating systems and probably more versions of standards than operating systems.

You were bit ahead of your time if you were reading ebooks back then.


Well thats an interesting question. Among the best is certainly "How to design Programs", http://htdp.org/ It's about Scheme. It does a better job than SICP I think, even though it still needs some endurance to get through.

Generally, there are plenty of good books, you get some ideas usually by combining knowledge from different books...

Even though this may sound a bit old-fashioned, simply in terms of quality and self-containedness, "The C Programming Language" by K&R is by far the best technical book I've read. You can certainly download it as PDF somewhere.


I'm not sure if it counts as a book, but the Django docs are amazing. I learned a lot about web-dev by printing out the docs (500pp at the time) and reading them cover to cover.


I second your praise of Django docs. They're a good example of how technical docs should be written. I think the team behind Django even wrote an article on how to write good docs. My gut feeling is that the docs is part of the reason Djangos is so popular because anyone new to web frameworks would find it easiest to pick up Django.


I believe it totally counts. I learned so much about database relationships from the Django docs.


All the books by W. Richard Stevens[1], especially the TCP/IP Illustrated Volumes. No one covers theory with actual illustration and real world examples like Stevens does in his books.

[1] http://en.wikipedia.org/wiki/W._Richard_Stevens


A Sane Approach to Database Design by Mark Johansen

http://www.electrictactics.com/book/sanedb.html

The book is really accessible and helpful. SaneDB helped me survive a development project when I was new to many things and beat some sense into me about what databases (and DBAs) are for that still comes in handy every week.


Technically a paper, not an ebook - but "Out of the Tarpit".

http://shaffner.us/cs/papers/tarpit.pdf



Dive Into Python - http://www.diveintopython.net/

Some of the examples are a bit dated now, and this type of immersive learning at intermediate/advanced levels is increasingly common (e.g. the Head First series, Codecademy, etc) but when this book came out it was rare to have this learning method presented for anything other than the most beginning levels of a language.


Dependency Injection in .NET by Mark Seemann: http://www.amazon.com/gp/product/1935182501


Thank you for suggesting this. An excellent book it seems.


Scott Chacon used to have a peepcode ebook on Git Internals. That was pretty awesome. Not sure if there is a legal way to get that anymore after peepcode got acquired :(



A quick Google search came up with this: https://github.com/pluralsight/git-internals-pdf


> "Artificial Intelligence: A Modern Approach"

I think it is one of the best books written on any topic ever period.

It is kinda advanced but also brilliant, and was a turning point in my decision to master hacking.

> Now I am reading "Two Scoops of Django" and enjoying it A LOT.

It's closer to a beginner/intermediate level, and it brings me a lot of joy and excitement about programming.

> Another one is "Hackers & Painters", of course. PG is brilliant, nuff said.

His book "ANSI Common Lisp" is definitely on the top of my reading list, I've already started and it is great.

> Just to mention, a little less technical book is "Ghost In The Wires" by Kevin Mitnick, a famous hacker.

I'm listening the audiobook now and it is really inspiring, entertaining and fantastic.


> It is kinda advanced

I disagree. It's used as an introductory book on AI classes and it's a very broad book covering enough surface on different AI topics. But if you want to go deep, you have to dig into academic papers


Beej's Guide to Network Programming

http://beej.us/guide/bgnet/


Javascript Allongé by Reg Braithwaite was an incredible book, not just for changing how I viewed Javascript, but it also taught me a lot about programming as a whole. It taught me a lot of lessons in factoring functions into orthogonal concerns that have been highly influential on my coding style in all languages ever since.

Available free in HTML form: https://leanpub.com/javascript-allonge/read


Seconded! I thought I knew a lot about JavaScript but this book explains some fundamental things about how JavaScript works that I'd never seen before, not including all the combinator goodness.


Surely you're joking, Mr. Feynman!

Not very technical, but there's some interesting stuff in there, for example about working on the atomic bomb in WWII.


One of my favorite books for certain.


A brilliant book indeed!


Am I the only one who's curious why the poster specified an "eBook" instead of just "book"?


Technical content tends to be more picky about layout etc than prose, which can be an issue for e-readers. Also some technical books suffer from the lack of ability to quickly browse and jump from one page to another.


Very good point about jumping around in technical books. I rarely read any tech books for this reason. eBooks are better suited for casual reading which is done front to back. Tech/reference books suffer on eReaders due to poor navigation and insufficient linking.


OP may be writing an ebook and wants good examples to emulate.


SCIP should always be in the list as one of the best programming books ever written. Others are 'Simply Scheme: An introduction to computer science', simply scheme is an alternative to "How to design Programs", http://htdp.org/, both books are written for non-programmers but they provide a gentle introduction to many advanced topics covered in SCIP. I prefer "Simply Scheme". Another one is the "Little Schemer" http://www.amazon.com/The-Little-Schemer-4th-Edition/dp/0262....


"Refactoring: Improving the Design of Existing Code" http://www.amazon.com/Refactoring-Improving-Design-Existing-...


Discover Meteor

Multi-Format: epub/pdf/html, great use of Middleman, being internationalised, interesting & useful videos (but more might perhaps be made of the premium end)

Content: really well matched to target audience. Ongoing updates.

Design: Very attractive countenance


Without a doubt it is, for me, "Pat & Hen": "Computer Organization and Design" by Patterson and Hennessy. I was mesmerised by this book as an undergrad and spent night after night devouring every page. It is a true eye-opener, explaining why computers are the way they are from the compiler down to the CPU design. You even get to design a CPU from scratch, i.e., from basic logic gates (in the older editions, at any rate). Magnificent and enlightening, a must read for anyone who really wants to know "what's going on under the hood".


I enjoyed this book as well, and it was the text for my computer-architecture class. The authors do a great job explaining the underlying mechanisms of computing hardware clearly and concisely.



Haven't read the original, but The Little Schemer is a more recent version of it, and really really good.




Eloquent Ruby[1] by Russ Olsen

If you are an experienced programmer coming to Ruby this is definitely the place to start. Especially if you are a Java or .NET EE-indoctrinated programmer. The people who maintain your code after you will be thankful that you read this and wrote idiomatic Ruby.

If you just want to learn Ruby or read an excellent technical book as mind food this book is also a great choice.

(Code by Petzold is actually my favorite technical book, but its already been picked.)

[1] http://eloquentruby.com/


For me, there have been more than one. I'll list them in the order I read them. I have them all in an eBook form to read in my Kindle App on my Nexus 7. 1) Clean Code 2) Pragmatic Programmer 3) Patterns for Enterprise Application Architecture

There's some overlap in contents, but I feel they complement each other very well.



I haven't finished it yet, but Linux Networking Internals was really amazing. It is a bit low-level, but even though I never really wanted to code low-level Linux, it taught me a lot about Linux's ways to handle incoming data and forward data, etc.


Best "learn a language" book I've read was the first edition of Joe Armstrong's Programming Erlang book.

For a Software Engineering book, it's hard to beat The Pragmatic Programmer.

A good working-with-other-people book is Extreme Programming Explained 2nd ed.


There are just so many...

Headfirst series (JavaScript, HTML, jQuery... all of them)

Discover Meteor

Refactoring: improving the design of existing code

Database design for mere mortals

MIT books (SICP, Algorithms)

Oh, and of course... Human Interface Guidelines by Apple. One of the best UX books on app design.

All books are ebooks for me, so this list is impossibly long.


Code Complete 2nd edition

Super hands-on book. Since reading it, I'm writing better programs faster.


This book when combined with "The Clean Coder", and "Refactoring: Improving the design of existing code" completely changed how I thought about programming. It "levelled me up" so to speak. Even though I'm as far from being good as it gets, I still know I improved significantly from reading these three books.


Hackers in-depth interviews: « Coders at Work »

General topic: « The Pragmatic Programmer: From Journeyman to Master »

Java and more: « Effective Java » 2nd edition

About unit testing with Java tools: « Practical Unit Testing with Mockito and JUnit »


Linux Device Drivers: http://lwn.net/Kernel/LDD3/ The best and free kernel book.


Peopleware

Because even the best technology has people behind it.


Developing Trust: Online Security for Developers - Written by Matt Curtin

&

Implementing SSL/TLS Using Cryptography and PKI - Written by Joshua Davies


Game Programming Patterns:

http://gameprogrammingpatterns.com


K&R, the white book. There are few books that match it in conciseness and elegance.


Think Python, by the Green Tea Press.

"How to think like a computer scientist"


"Object-Oriented Software Construction" by Bertrand Meyer.


Linux kernel development


Sandi Metz's Practical Object-Oriented Design in Ruby.


+1 for Practical Object-Oriented Design in Ruby. I'm admittedly a relative novice (my background is in finance, but I've been learning to program through books and online resources for about a year now).

Reading this book led to many "Aha" moments where I really started to understand the benefits of OOP. Great read.


The Mythical Man-Month: Essays on Software Engineering


edit: forget my answer. I didn't read them as ebooks

for plain books:

Windows Internals by Solomon and Russinovich

AI: A modern Approach by Russell and Norvig


The {Little,Reasoned,Seasoned} Schemer


Copy Hackers.


The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities

http://www.amazon.com/The-Software-Security-Assessment-Vulne...




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

Search: