Recommended Books
Object Oriented Design
- Practical Object Oriented Design in Ruby (Sandi Metz)
- 99 Bottles of OOP (Sandi Metz, Katrina Owen)
- Confident Ruby (Avdi Grimm)
TDD:
- Test-Driven Development, By Example (Kent Beck)
Computing:
- Structure and Interpretation of Computer Programs
- Understanding Computation
There are books that I think are worth reading, but couldn’t categorize them:
- Pragmatic Programmer (Dave Thomas, Andy Hunt)
- Apprenticeship Patterns
- Programming Pearls
Ruby:
- Programming Ruby (Dave Thomas)
- Eloquent Ruby (Russ Olsen)
- Confident Ruby (Avdi Grimm)
- Why’s Poignant Guide to Ruby (Why The Lucky Stiff)
Elixir:
- Elixir in Action (Sasa Juric)
- Programming Elixir (Dave Thomas)
- Programming Phoenix
Vim:
- Practical Vim (Drew Neil) is a fantastic book for getting better at Vim, once you’ve learned the basics of navigating. It is organized as 100+ tips, so it’s easy to read and incorporate one tip at a time in your workflow.
- A Byte of Vim (PDF link - freely available) is an excellent intro for a beginner.
Other excellent intros to programming langugages:
- The C Programming Languge (Dennis Ritchie, Brian Kernighan)
- JavaScript: The Good Parts (Douglas Crockford)
- Seven Languages in Seven Weeks (Bruce A Tate)
Some interesting reading lists
Books available online
This a collections of bookmarks to interesting programming books that are available online.
- Teach Yourself Computer Science - A collection of resources for learning CS.
- The Nature of Code, by Daniel Schiffman
- High Performance Browser Networking, by Ilya Grigorik
- Programming Languages: Application and Interpretation, by Shriram Krishnamurthi
- Software Foundations
- Learn Haskell Fast and Hard
- Programming in Scala, by Martin Odersky, Lex Spoon, and Bill Venners
- Interpreting Lisp [PDF]
- Programming and Programming Languages
- The Design and Implementation of Probabilistic Programming Languages - Noah D. Goodman and Andreas Stuhlmüller
- Probabilistic Models of Cognition - by Noah D. Goodman and Joshua B. Tenenbaum
- Principles of Distributed Computing (Roger Wattenhofer) (lecture notes)
- Distributed Systems for Fun and Profit
- Introduction to Computing: Explorations in Language, Logic, and Machines - David Evans
- Read Eval Print Love - Michael Fogus
- Game Programming Patterns - Robert Nystrom
- Crafting Interpreters - Robert Nystrom
-
Beautiful Racket - Matthew Butterick
- Engineering a Safer World - Systems Thinking Applied to Safety (Nancy G Levenson) [PDF]
Operating Systems
- Operating Systems: Three Easy Pieces - by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau
- Operating System: From 0 to 1
- How to Make a Computer Operating System
Mathematics
- Immersive Linear Algebra
- Mathematics for Computer Science by Eric Lehman, F Thomson Leighton, Albert R Meyer (PDF)
System programming:
Lists of freely available books