# Learning JavaScript

Here, I'm collecting a number of links to useful resources for learning JavaScript (and related web tech). If you have suggestions for additional links, let me know!

* ian@iangilman.com
* https://twitter.com/iangilman

# Lessons / Challenges

* https://www.khanacademy.org/cs/programming
* https://dash.generalassemb.ly/
* https://www.codecademy.com/catalog/language/javascript
* http://www.jsdares.com/
* http://nodeschool.io/
* https://github.com/liammclennan/JavaScript-Koans
* https://github.com/mrdavidlaing/javascript-koans
* http://www.crunchzilla.com/
* http://blog.iangilman.com/2015/02/self-this.html
* https://www.javascript.com/resources
* http://learnxinyminutes.com/docs/javascript
* https://javascript30.com/
* https://watchandcode.com/p/practical-javascript
* https://www.freecodecamp.org/
* https://coderbyte.com/
* https://www.codewars.com/
* https://script-8.github.io/
* https://learnjavascript.online/
* https://adventofcode.com/
* http://flexboxfroggy.com/ (for CSS, not JavaScript)
* https://www.codementor.io/javascript-experts

# Manuals

* http://eloquentjavascript.net/
* https://developer.mozilla.org/en-US/learn/javascript
* https://developer.mozilla.org/en-US/learn/css
* https://developer.mozilla.org/en-US/learn/html
* http://www.impressivewebs.com/jquery-tutorial-for-beginners/
* http://youmightnotneedjquery.com/
* http://superherojs.com/
* http://jsforcats.com/
* http://adamschwartz.co/magic-of-css/
* [ES6 Cheatsheet](https://devhints.io/es6)
* [ES6 Overview in 350 Bullet Points](https://ponyfoo.com/articles/es6)

# General

* http://jstherightway.org/
* [Things I Wish Someone Had Told Me When I Was Learning How to Code](https://medium.com/learning-to-code/565fc9dcb329)
* [Thoughts about differences in individual productivity in software engineering](https://medium.com/@cramforce/ive-lately-been-thinking-about-what-patterns-could-explain-perceived-differences-in-productivity-77d1f52f1527)
* https://www.reddit.com/r/LearnJavaScript
* [How to get faster pull request reviews](https://github.com/kubernetes/kubernetes/blob/master/docs/devel/faster_reviews.md)

# Code to Fiddle With

* http://codepen.io/
* http://wavepot.com/
* https://github.com/iangilman/js-toys
* https://github.com/iangilman/simple-webapp-boilerplate
* http://www.ellipsetours.com/demos/
* https://www.khanacademy.org/profile/iangilman/programs
* https://www.khanacademy.org/cs/browse-programs
* https://github.com/openseadragon/openseadragon/issues?labels=good+first+bug&page=1&state=open
* https://github.com/kylestetz/lissajous
* http://rectangleworld.com/blog/
* http://rileyjshaw.com/terra/
* https://glitch.com/learn-to-code
* [30 seconds of code](https://github.com/Chalarangelo/30-seconds-of-code/blob/master/README.md) (Curated collection of useful Javascript snippets that you can understand in 30 seconds or less)

# Project Ideas

* http://codeboom.wordpress.com/2012/07/30/10-mini-programming-projects/
* http://inventwithpython.com/blog/2012/02/20/i-need-practice-programming-49-ideas-for-game-clones-to-code/
* http://ideasource.blankdots.com/
* https://github.com/rdio/api/issues?labels=project+ideas&state=open (music API project ideas; originally for Rdio but applicable to other services)
* https://www.reddit.com/r/dailyprogrammer/
* https://www.reddit.com/r/dailyprogrammer_ideas/
* https://www.codementor.io/projects/javascript

… Or make something pretty for [Arty Widget](http://www.artywidget.com/)! Don't forget to take a look at the [guidelines](https://github.com/pixfabrik/artywidget/wiki/Artwork-Guidelines).

# Libraries

* https://p5js.org/
* http://jquery.com/
* https://underscorejs.org/
* http://lesscss.org/
* http://mrdoob.github.io/three.js/
* http://html5gameengine.com/

# Regular Expressions

* http://regexone.com/ (interactive tutorial)
* http://regexpal.com/ (try out your regex)
* http://regexr.com/ (try out your regex)
* http://www.regexper.com/ (diagrams your regex)

# Hosting

* https://neocities.org/
* http://pages.github.com/
* https://glitch.com/
* http://www.site44.com/
* http://surge.sh/
* https://hyperdev.com/
* https://zeit.co/now
 
# GitHub

* https://help.github.com/articles/set-up-git
* [A Stupid Simple Guide to GIT](https://medium.com/the-startup-lab-blog/stupid-simple-guide-to-git-f562df9c49ad)
* [git cheat sheet](http://rogerdudler.github.io/git-guide/files/git_cheat_sheet.pdf)
* [Making a Pull Request](https://github.com/openseadragon/openseadragon/wiki/Making-a-Pull-Request) (written for OpenSeadragon, but applicable to any project)
* [Ian's Git Cheat Sheet](https://gist.github.com/iangilman/1097883) (just random bits I've found useful)
* [Learn Git Branching](http://pcottle.github.io/learnGitBranching/)

# Finding Open Source Projects to Contribute to

* http://up-for-grabs.net/
* https://yourfirstpr.github.io/
* http://24pullrequests.com/
* https://openhatch.org/
* https://www.codetriage.com/
* https://github.com/MunGell/awesome-for-beginners#javascript
* https://contributor.ninja/
* https://opensource.guide/how-to-contribute/
* https://github.com/trending/javascript

Also, I manage these two projects, and gladly welcome new contributors!

* https://github.com/openseadragon/openseadragon
* https://github.com/pixfabrik/artywidget

# Meetups

* http://javascript.meetup.com/cities/us/98108/ (Seattle)

# Design

* https://hackdesign.org/

# For Kids

* [Apps To Get Your Kids Coding On The iPad, Part 1](http://ipadinsight.com/ipad-in-education-2/apps-to-get-your-kids-coding-on-the-ipad-part-1/)
* [Apps To Get Your Kids Coding On The iPad, Part 2](http://ipadinsight.com/ipad-app-reviews/apps-to-get-your-kids-coding-on-the-ipad-part-2/)
* http://coderdojo.com/
* http://scratch.mit.edu/ and http://makomatic.com/dojo/exercises.html
* http://www.thinkfun.com/robotturtles/

# More Resource Lists

* [Another list of JavaScript resources](https://gist.github.com/unkillbob/7090664)
* [Seattle JS Hackers' resource list](https://github.com/SeattleJSHackers/seattlejshackers/blob/master/README.md)
* [Resource list from JavaScript group on Facebook](https://www.facebook.com/notes/javascript/resources-for-learning-javascript/10151409218055343/)
* https://coderdojo.com/resources/