Awesome
Resources
A collection of online resources for various technologies, languages, and tools.
If you see something that is missing, submit a pull request!
Contents
- General
- 3D Graphics Programming
- Accessibility
- Android
- AngularJS
- API
- Artificial Intelligence
- Assembly
- Atom (Editor)
- Bash
- Bootstrap
- C
- C++
- Category Theory
- Clojure
- ClojureScript
- CoffeeScript
- Colors
- Compilers
- Cryptography
General
- Free Programming Books
- The Architecture of Open Source Applications
- Computer Science Papers We Love
- Hipster Dev Stack
- Codecademy
- Become a Programmer, Motherfucker
- Dash - offline API documentation
- Google Style Guides
- bentobox.io
- Frontend Development Bookmarks
- Big List of Static Web Servers
- searchcode - a source code search engine
- sourcegraph
- r/programming
- r/dailyprogrammer
- r/coding
- The Nature of Code
- How To Write A README Worth Reading
- A Curated List of Awesome Lists
- A curated list of amazingly awesome awesomeness
- Tech Talks
- Guides: A guide for programming in style
- IntroLearn: Programming
- Structure and Interpretation of Computer Programs
- Great Works in Programming Languages
- Programming and Programming Languages
- UX Checklist
- Web Designer Checklist
- Usability Checklist
- Interaction Design Checklist
- Awesome CS Courses
- Frontend Developer Interview Questions
- Git and GitHub Cheat Sheet
- The Art of Command Line
- Logic, Languages, Compilation, and Verification
- CS For All
- From Nand to Tetris: Building a Modern Computer From First Principles
- Fledgling Languages List
- Pow
- DBWrench
- Programming From The Ground Up
3D Graphics Programming
Accessibility
Android
AngularJS
- AngularJS.org Tutorial
- AngularJS Learning - all the things
- Learn Angular
- How to Learn AngularJS
- A JavaScript Feed Reader in Under 10 Minutes Using AngularJS
- Introduction to AngularJS in 50 Examples
- Testing with AngularJS [video]
- AngularJS Git Commit Message Conventions
- AngularJS Style Guide
many of these resource come from this post
API
Artificial Intelligence
Assembly
Atom (Editor)
- Official Atom Docs
- Splitting Atoms
- Defining Atom Commands in Your Init Script
- Exploring the Power of Atom Init Scripts
- Modularizing Atom Init Scripts
Bash
- Bash Guide for Beginners
- Defensive Bash Programming
- Google's Shell Style Guide
- Bash Pitfalls
- What I learned from other's shell scripts
- Filenames and Pathnames in Shell: How to do it correctly
Blogging
Bootstrap
C
- Learn C The Hard Way
- The C Programming Language (the K&R book) - you can buy it, but there are plenty of copies floating around on the internet
- The Basics of C Programming
- The Descent to C
- Learn C and Build Your Own Lisp (github)
- Guide to Advanced Programming in C
- C++ Patterns Using Plain C
- C Programming Notes
- What Every C Programmer Should Know About Undefined Behavior
- Building C Projects
- Compiler Design in C
- A Guide to Undefined Behavior in C and C++
- What Every C Programmer Should Know About Undefined Behavior
- How to Get Started with the LLVM C API
- Modern C [pdf]
- Everything You Need To Know To Write Good C Code
- Object-Oriented Techniques in C
- Bit Hacks
- How To C in 2016
C++
- Common C++ Gotchas
- Functional Programming in C++
- Five Popular Myths about C++, Part 1
- Five Popular Myths about C++, Part 2
Category Theory
Clojure
- Functional Programming in Clojure
- Understanding Clojure's Persistent Vectors, pt. 1 (pt. 2, pt. 3)
- Clojure Cheatsheet
- Clojure for the Brave and True
- Clojure From The Ground Up
- The Caves of Clojure
- Clojure Style Guide
- SCIP Distilled
- Clojure By Example
- Clojure, The Good Parts
ClojureScript
- ClojureScript Syntax in 15 Minutes
- ClojureScript Quick Start
- ClojureScript Tutorial
- CLJS-Bootstrap
- Modern ClojureScript
- Tetris in ClojureScript
- T3TR0S
- Om Next Quick Start
- Om Tutorial
- Introduction To Reagent
CoffeeScript
Colors
- Colors: A nicer color palette for the web
- Flat UI Colors
- Basic Color Theory for Programmers
- Generating Omnichromatic Images
Compilers
- Want To Write A Compiler? Just Read These Two Papers
- An Incremental Approach To Compiler Construction
- Compiler Design in C
- Metacompilers Part 1 - Build a Compiler in JavaScript
- Bootstrapping a Simple Compiler From Nothing
- Learn C and Build Your Own Lisp (github)
- Write You a Haskell: Building a modern functional compiler from first principles
Cryptography
CSS
- CSS - Mozilla Developer Network
- CSS3 - Mozilla Developer Network
- Code Guide by @mdo - CSS
- Idiomatic CSS
- SMACSS - Scalable and Modular Architecture for CSS
- WTF, HTML and CSS?
- Must Watch CSS
- CSS Protips
- Bulma
Factor
Flexbox
D3.js
- d3js.org: Data Driven Documents
- Interactive Data Visualization, Scott Murray
- Interactive Data Visualization for the Web, Scott Murray
- D3.js Wiki Tutorials
- Dashing D3.js
- D3.js Step by Step
Maps
- Let's Make a Map
- Let's Make a Bubble Map
- Planetary.js: Awesome interactive globes for the web
- SmallWorld.js (github)
- Geography of Jobs: animated mapping with D3
Data Visualization (in the browser)
- d3js.org: Data Driven Documents
- Raphael
- Chart.js
- Dashing D3.js
- Reusable D3 Charts and Components
- Chartist.js
- Data Visualization with JavaScript
- Bokeh - Interactive Web Plotting for Python
- MetricsGraphics.js
Data Mining
Editors
Sandboxes
Emacs
Ember
Erlang
Flask
Front-end Web Development
- Front-end Development Bookmarks
- Front-end Development Guidelines
- Front-end Tooling Workflows
- Dev Tool Secrets
- Frontdesk - community driven list of useful things for front end developers
- Web Fundamentals: Best Practices for Modern Web Development
- Web Starter Kit
- Front-end Developer Handbook
Front-end Web Performance
- Front-end performance for web designers and front-end developers
- High Performance Browser Networking
- Performance Planet
- Ilya Grigorik's Blog
- Optimizing Web Font Rendering
- CSS-Perf by @mdo
- JavaScript Performance for Madmen
- List of Performance Analysis and Monitoring Tools
- Awesome Web Performance Optimization
- Tips for Authoring Fast-Loading HTML Pages
- Delivering the Goods - Paul Irish [video]
Functional Programming
Game Programming
Git
- Git Docs
- Pro Git - Scott Chacon
- Git Cheat Sheet
- Git Workflows - Atlassian
- Git Tutorials - Atlassian
- Git tips from the trenches
- Think Like a Git
- git-flow
- github-flow
- Git Magic
- A Practical Git Introduction
- Introduction to Git and GitHub
- Git Ready
- Git From The Bottom Up
I dump all things git-related in man-git.
Go
- An Introduction to Programming in Go
- Go: a simple programming environment [video]
- Get Your Development Team Started With Go
- Concurrency is Not Parallelism
- When in Go, Do as Gophers Do
- Advanced Go Concurrency Patterns
- Ten Useful Techniques in Go
Haskell
- Try Haskell
- Learn You a Haskell for Great Good
- A Gentle Introduction to Haskell
- Haskell Tutorial for C Programmers
- Real World Haskell
- List of Haskell Tutorials
- What I Wish I Knew When Learning Haskell
- Architecture of a Real World Haskell Application
- Haskell Packages for Development
- Ninety-Nine Haskell Problems
- Getting It Done With Haskell
- How I Start: Haskell
- The Evolution of a Haskell Programmer
includes both Hugs and GHC tutorials
HTML
- HTML - Mozilla Developer Network
- HTML5 - Mozilla Developer Network
- Code Guide by @mdo - HTML
- WTF, HTML and CSS?
Images and Photos
Io
iOS
- iOS Dev Center
- Ray Wenderlich - Tutorials for iOS Developers and Gamers
- NSHipster
- objc - a periodical about best practices and advanced techniques in Objective-C
- Subjective-C: a study of innovative iOS interfaces
- Autolayout Examples
- Awesome iOS
J
Java
- An Opinionated Guide to Modern Java Development, Part 1
- An Opinionated Guide to Modern Java Development, Part 2
- Java Garbage Collection Distilled
JavaScript
- Superhero.js (github)
- JavaScript - Mozilla Developer Network
- Eloquent JavaScript 2nd Edition
- Eloquent JavaScript 1st Edition
- Learning JavaScript Design Patterns
- Douglas Crockford on JavaScript
- Speaking JavaScript
- Airbnb JavaScript Style Guide
- Unit Testing in JavaScript with Jasmine [video]
- Human JavaScript
- JavaScript Modules
- JS Must Watch
- Awesome JavaScript
- Advanced objects in JavaScript
- You Don't Know JS
- Google JavaScript Style Guide
- Understanding JavaScript Inheritance
- Must Watch JavaScript
- Metacompilers Part 1 - Build a Compiler in JavaScript
- idiomatic.js
- Functional Programming using JavaScript
- JavaScript Regular Expression Visualizer
- JavaScript Equality Table
- Programming JavaScript Applications
- JS Books
- ECMAScript 6 Compatibility Table
- JavaScript Garden
- The Refactoring Tales
ES6
jQuery
Julia
JVM
Kotlin
LESS
Linux
Lisp
- Learn Lisp the Hard Way
- Ninety-Nine Lisp Problems
- It is not hard to edit Lisp code
- Awesome Common Lisp
- Paul Graham's On Lisp
- Modern On Lisp Companion
- A Brief Guide to the Common Lisp Object System
Machine Learning
- Basics of Machine Learning
- What Does a Neural Network Actually Do?
- Awesome Machine Learning
- Hacker's Guide to Neural Networks
- UCIrvine Machine Learning Dataset Repository
- Machine Learning Course from Tom Mitchell
- Deep Learning Reading List
Math
- BetterExplained Math Cheatsheets
- An Intuitive Guide to Linear Algebra
- Eigenvectors and Eigenvalues: Explained Visually
- An Interactive Guide To Fourier Transforms
- Free Spring Math Books (PDFs)
Markdown
Meteor.js
Misc
- Simple CPU
- Let's Build a Browser Engine
- Bootstrapping a Simple Compiler From Nothing
- Sorting Algorithm Animations
- Visualizing Data Structures and Algorithms
- Game Theory
- Fundamentals of Compression
- Scsh Reference Manual
- Awk in 20 Minutes
- Open Data Structures
- Alligator Eggs: A Puzzle Game
- A Gentle Introduction to Algorithm Complexity Analysis
Nim
formerly known as Nimrod
Node.js
OAuth
Objective-C
- objc - a periodical about best practices and advanced techniques in Objective-C
- Ray Wenderlich Objective-C Style Guide
- NYTimes Objective-C Style Guide
OCaml
OpenGL
Operating Systems
- Think OS: A Brief Introduction to Operating Systems
- The Little Book about OS Development [pdf]
- Operating Systems: Three Easy Pieces
Physics
PostgreSQL
Product Design
Programming Challenges
- Google Code Jam archives
- Project Euler
- Rosetta Code
- /r/dailyprogrammer
- Coffee Time Challenges
- CodeChef
- UVa Online Judge Programming Challenges
- ACM ICPC Past Problems
- Rosalind Bioinformatics Problems
- Mega Project List
- Ninety-Nine Haskell Problems
- Ninety-Nine Lisp Problems
- Ninety-Nine Prolog Problems
Programming Languages
- Hyperpolyglot
- 7 Part Implement Your Own Programming Language Guide
- The Early History of Smalltalk
- DIY: Make Your Own Programming Language
- Write Yourself a Scheme in 48 Hours
- Write You a Haskell: Building a modern functional compiler from first principles
- Implementing a JIT Compiled Language with Haskell and LLVM
Prolog
Python
- Learn Python the Hard Way
- How to Think Like a Computer Scientist: Learning with Python
- Full Stack Python
- Top 10 Mistakes that Python Programmers Make
- Anti-Patterns in Python Programming
- 30 Python Language Features and Tricks You May Not Know About
- How to Write a Lisp Interpreter in Python
- Python Practice Book
- The Invent with Python Bookshelf
- Python Tips and Traps
- Problem Solving with Algorithms and Data Structures
- Intermediate Python
R
- R Language for Programmers
- Introduction to Data Analysis with R
- Starting data analysis/wrangling with R: Things I wish I'd been told
Reactive Programming
React.js
- React Primer
- Learning React.js: Getting Started and Concepts
- Build a Real-Time Twitter Stream with Node and React.js
- Getting to Know Flux, the React.js Architecture
- Build a Simple Shopping Cart Using React.js and Flux
- Awesome React
- React JS Tutorial and Guide to the Gotchas
- React.js Stuff
- 3 Ways to Integrate Ruby on Rails + React + Flux
- React Native Playground
- How To Structure A React Project
- 9 Things Every React.js Beginner Should Know
Ruby
- ruby-lang.org
- Try Ruby
- Why's Poignant Guide to Ruby
- Programming Ruby: The Pragmatic Programmer's Guide
- Ruby Koans
- Ruby Monk
- Understanding Ruby blocks, Procs, and lambdas
- Ruby Trick Shots: 24 Ruby Language Tips and Tricks
- Some Ruby Gotchas
- A Community-driven Ruby Coding Style Guide
- GitHub's Ruby Style Guide
- Practical Object-Oriented Design in Ruby: Examples
- How I Start: Ruby with Steve Klabnik
- Awesome Ruby
- Ruby Bookmarks
- 5 Killer Ruby Talks of 2014
- Fast Ruby
Ruby on Rails
- Ruby on Rails Guides
- Ruby on Rails Tutorial: Learn Web Development with Rails
- RailsCasts - free and subscription-based screencasts
- ASCIIcasts - transcription and code to follow RailsCasts
- Rails Apps
- User Authentication in Ruby on Rails
- A Curated List of Resources for Ruby and Rails Learning
- Top Rails Resources
- Good open source Ruby on Rails projects to learn from?
- Simple RailsCasts projects to learn from
- Rails Style Guide
- Awesome Rails Gems
Testing
- Testing CoffeeScript for Rails with Jasmine
- Testing JavaScript in Rails
- How I Sped Up Our Rails Test Suite by 267%
Rust
- A 30-Minute Introduction to Rust
- The Rust Lang Tutorial
- The Rust Reference Manual
- Rust Note Research
- Rust for Rubyists
- Rust by Example
- A Quick Intro to Rust Macros
- Awesome Rust
- Roguelike Tutorial in Rust
- Getting Rusty
- This Week in Rust
- Rust Examples
- Rustlings
SASS
Scala
Sed
Sinatra
Smalltalk
- GNU Smalltalk User's Guide
- The Early History of Smalltalk
- Basic Aspects of Squeak and the Smalltalk-80 Programming Language
- Pharo by Example
SVG
tmux
Typography
Unix
Vagrant
Vim
- Vim Tips Wiki
- Use Vim
- Learn Vimscript the Hard Way
- Best of Vim Tips
- Vim Regex
- Vim Text Objects: The Definitive Guide
- What are the dark corners of Vim your mom never told you about?
- VimAwesome - Awesome Vim Plugins from Across the Universe
- Learning Vim in 2014: Getting More from Vim with Plugins
- Vim After 11 Years
- Vim Cheat Sheet
- Seven Habits of Effective Text Editing
- A Good Vimrc
- Vim Galore
Web Apps
Web Components
- Web Components The Right Way
- Polymer Project
- WebComponents.org
- Polymer and Web Components change everything you know about web development [video]
- Web Components the Right Way
- Google Web Components Style Guide
License
Copyright © 2014-2016 Josh Branchaud
Released under the MIT license. See LICENSE for details.