#books
A collection of (free) web books, guides, and references by category that I've found over the years. Suggestions welcome.
#General Programming
- Learn X in Y Minutes
- A collection of "tours" for every popular programming language. Intended for those with programming experience to quickly learn new languages.
- Crafting Interpreters
- A book on designing your own language interpreter. By Robert Nystrom, creator of programming languages such as Wren, Finch, and Magpie.
- Structure and Interpretation of Computer Programs
- A legendary text book. Not an easy read. Also see the JavaScript Adaptation.
- Nature of Code
- "This book focuses on a range of programming strategies and techniques behind computer simulations of natural systems, from elementary concepts in mathematics and physics to more advanced algorithms that enable sophisticated visual results."
#C/C++
- Build Your Own Lisp
- "If you're looking to learn C, or you've ever wondered how to build your own programming language, this is the book for you."
- Build Your Own Text Editor
- A walkthrough tutorial on how to build a text editor with C.
- Beej's Guide to C Programming
- "This is a rather comprehensive guide to C for folks who already know how to program in another language. The first half of the book is written in a tutorial style, while the second half is a reference section complete with examples (inspired by the incomparable Turbo C Bible). The goal is to keep this up-to-date with the latest C standards."
- C++ By Example
- "Here you will find clear and up to date C++ code examples with concise and straightforward explanations."
- Learn C++
- "A free website devoted to teaching you how to program in C++"
#Lisp
- Learn Lisp The Hard Way
- "Lispers of all experience levels should benefit from this book. We'll be exploring the language through real, immediately useful source code examples, and dissecting the language down to its core."
#Janet
- Janet for Mortals
- A web book about the Lisp-like Janet programming language.
#Network Programming
- Beej's Guide to Network Programming
- "This document should give the average competent C programmer the edge s/he needs to get a grip on this networking noise."
- Ethernet and IP Networking 101
- A software engineer's attempt at understanding and explaining networking in basic terms.
#HTML/CSS
- HTML For People
- Simple introduction to creating webpages for non-technical people.
- MarkSheet
- An introduction to creating webpages with HTML & CSS.
- Learn to Code HTML & CSS
- Yet another introduction to creating webpage with HTML & CSS. Great for beginners. Good alternative to the famous Jon Duckett book.
- Learn to Code Advanced HTML & CSS
- Shay Howe's second online book on HTML & CSS. Logical next step if you finished the book directly above.
- Mozilla Developer Network: HTML
- Good guide, but may be a bit dense. Great reference material.
- Mozilla Developer Network: CSS
- Like the HTML guide. Great reference material.
- HTML Tips
- A collection of beginner and advanced tips on HTML & CSS by Thomasorus.
- HTML semantics cheat sheet
- A semantic HTML cheat sheet. Use semantic HTML to make your sites more accessible and consistent in functionality across devices.
#JavaScript
- JavaScript Allongé
- A guide to Functional Programming, using JavaScript.
- Mostly Adequate Guide to Functional Programming
- Yet another guide to Functional Programming, using JavaScript.
- You Don't Know JavaScript
- A series of books focusing on the underlying core mechanisms of JavaScript.
- Functional Light JS
- A pragmatic look at Functional Programming with JavaScript. By Kyle Simpson, writer of the You Don't Know JavaScript series.
- Thinking in Ramda
- A brief, accessible and effective introduction to functional programming using the Ramda JavaScript library. A series of blog posts.
- JavaScript for Impatient Programmers
- A modern guide to JavaScript for those with existing programming knowledge.
- Deep JavaScript
- More JavaScript knowledge by the great Dr. Axel Rauschmayer.
- Clean Code JavaScript
- A guide to the software engineering principles of Robert C. Martin, using JavaScript.
- 33 JavaScript Concepts
- Essential concepts for the experienced JavaScript developer.
- JavaScript for Cats
- A short, beginner-friendly intro to programming with JavaScript.
- Eloquent JavaScript
- More comprehensive introduction to JavaScript & General Programming.
- The Modern JavaScript Tutorial
- Comprehensive JavaScript reference.
- Learning JavaScript Design Patterns
- Update 2022: This book's site has now been updated to a new, stylish guide website (patterns.dev) with a React slant. I am not a fan of the heavier website, nor the unagnostic React approach. The classic collection of design patterns for JavaScript can still be found on this page or better yet at the archive link.
- Mozilla Developer Network: JavaScript
- The gold standard of JavaScript references.
- MDN: A re-introduction to JavaScript
- A great introduction to JavaScript even for those with programming experience outside of JavaScript.
- How to manage HTML DOM with vanilla JavaScript only
- As the title implies, a collection of "common tasks of managing HTML DOM with vanilla JavaScript.
- Mixu's Node book
- A dated (2012), but beginner friendly introduction to server-side JavaScript with Node.js.
#C#
- Intro to C#
- An introduction to programming using the C# language.
- Tour of C#
- A brief crash course on C# intended for those with some programming experience.
#PHP
- PHP Apprentice
- A beginner-friendly introduction to programming in PHP with best practices in mind.
- PHP: The Right Way
- Less of a tutorial, more of a collection of PHP best practices.
- 2018 Guide to building secure PHP
- A guide to common PHP vulnerabilities.
#Python
- Automate The Boring Stuff With Python
- An excellent and pragmatic introduction to programming using Python 3. Perfect for beginners.
- Python 101
- A more general introduction to programming with Python. Good for beginners.
- A Byte of Python
- Another intro to programming using Python for those who know "how to save text files." Beginner-friendly.
- Dive Into Python 3
- As the title suggests, this is a deep dive into Python 3, highlighting differences from Python 2. Good reference.
#Rust
- The Rust Programming Language
- Official Rust Book.
- Rust By Example
- An official collection of runnable examples in Rust.
- Rust Cookbook
- "A collection of simple examples that demonstrate good practices to accomplish common programming tasks, using the crates of the Rust ecosystem."
- Tour of Rust
- An interactive tour of rust.
- Comprehensive Rust
- This is the Rust course used by the Android team at Google. It provides you the material to quickly teach Rust to everyone.
- Rust Atomics and Locks * Low-Level Concurrency in Practice with Rust
#Elixir
- Elixir School
- Comprehensive reference for Elixir.
#Haskell
- Learn You A Haskell for Great Good
- An introduction to Functional Programming with Haskell. Aimed at those with previous programming knowledge.
#ML
- Functional Programming in OCaml
- An introduction to Functional Programming with OCaml, adapted from Cornell CS3110.
#Racket
- Beautiful Racket
- "An introduction to language-oriented programming using Racket."
#Game Development
- Harvard CS50 Introduction to Game Development
- A free course with lectures, slides, and source code on developing games using Love2D.
- Game Programming Patterns
- A collection of game development-related design patterns. By the great Robert Nystrom.
- BYTEPATH
- A book published as a series of Github issues. Guides the user in creating a game using Lua and Love2D, with plenty of exercises. Intended for those with programming experience.
- How to LĂVE
- A gentle introduction to programming and game development using Lua and the Love2D game library.
#Game Design
- Riot Games Game Design Curriculum
- "Riot Gamesâ Game Design Curriculum is an entry-level course that teaches high school students the fundamental elements of game design using a framework and interactive workshops created by our own game designers."
#Math
- Calculus Made Easy
- An accessible and pragmatic introduction to Calculus. Originally published in 1910 by Silvanus P. Thompson.
#Electrical Engineering
-
- "Starts from the very basic fundamentals of electricity, and builds up to quite complex circuits and their workings."
-
All About Electronic Circuits for Kids
- Not a book, but a short introduction to Electronic Circuits for kids, along with a collection of useful links accessible to young learners.
#Literature
-
- A collection of literature in the public domain, available in multiple formats, with standardized and readable typography.
-
Electronic Texts of H.P. Lovecraft
- Collecton of HP Lovecraft writings. A browser plugin or feature to improve readability is recommended (e.g. Firefox Reader Mode).
#Cooking
- The Wikimedia Cookbook
- A collection of recipes from a number of nationalities and cultures. Editable open-content.
#Tech Interview Prep
- Tech Interview Handbook
- Front End Interview Handbook
- Grind 75
- Not a book. This is a customizable study plan for grinding Leetcode problems.
#Misc.
- Project Gutenberg
- An online library of over 60,000 public domain books, ranging on topics from literature, to cookbooks, and history.
- Wikibooks
- As the title suggests, these are open-content wiki-like textbooks on a myriad of subjects.