The Best Websites to Learn Coding Online


The Learn to Code movement has picked up momentum worldwide and that is actually a good thing as even basic programming skills can have a major impact. If you can teach yourself how to write code, you gain a competitive edge over your peers, you can think more algorithmically and thus can tackle problems more efficiently.

Don’t just download the latest app, help redesign it. Don’t just play on your phone, program it. — Obama.

There’s no reason why shouldn’t know the basics of coding. You can automate tasks, you can program your Excel sheets, improve workflows, you can extract data from websites and accomplish so much more with code. You may not be in the business of writing software programs but knowing the basics of coding will help you communicate more effectively with developers.

Gone are the days when you had to enroll in expensive computer training classes as now exist a plethora of web-based courses that will help you learn programming at your own pace in the comfort of your web browser.

The Best Sites to Learn Programming

If you are ready to take the plunge, here are some of the best websites that offer courses in a variety of programming languages for free. I have also added a list of companion ebooks that will give you a more in-depth understanding of the language and they don’t cost anything either.

Online Courses & Screencasts Programming Books (Free)
JavaScript Code Academy, Learn Street, Khan Academy,Code Combat, Code Avengers Eloquent JavaScript, JavaScript Guide, Speaking JS, JS The Right Way, Oh My JS,Canvassing
HTML & CSS Code Academy, Don’t Fear The Internet, Tutsplus,Learn Layout, A to Z CSS,Dash, Web Accessibility,The Hello World Mozilla, Dive into HTML5, 20 Things I Learned, HTML Dog,HTML & CSS, HTML5 for Designers, DOM Enlightenment, HTML Canvas
jQuery Code Academy, Tutsplus,Code School jQuery Fundamentals, Learn jQuery
Python Code Academy, Google,Learn Street, Python Tutor,IHeartPY Python for You and Me,  Dive into Python, Learn Python the Hard Way, Think Python,Python for Fun, Tango with Django, Django
Ruby & Ruby on Rails Code Academy,TryRubyCode Learn,Railscasts, Rubymonk,Learn Street Why’s (Poignant) Guide to Ruby, Learn Ruby the Hard Way, Learn to Program, Learn Rails by Example
PHP Code Academy PHP Programming, Practical PHP
Google Apps Script Getting Started, Office Hours, Google Scripts Examples,Learning Apps Script
WordPress Treehouse, WordPress TV
Linux & Shell Scripting, Explain Shell Conquer the Command Line
Node.js Nodetuts, Node School The Node Beginner Book,Mixu’s Node book, Node Up and Running, Mastering Node.js
Angular JS Code School, Egg Head,Learn Angular Angular JS Tutorial, Thinking Angular, Angular Tutorial,Getting Started (Adobe)
Git (version control) Code School, Git Immersion, GitHub Training Pro Git, Learn Git
Objective-C (iOS & Mac) Code School, Stanford, iTunesU
Chrome Dev Tools Code School, Dev Tools Secret, Chrome Dev Tools Tutorial,Udacity, Building Browser Apps
Go Language, GopherCasts Programming in Go, Go by Example, Learning Go
Java Learn Java, Coding Bat,Java Udemy, Learneroo Programming in Java, Thinking in Java, O’Reilly Learning Java,Think Java, Java & CS, Java for Python Devs
Android App Development Udacity (Google Developers), Coursera, The New Boston, Google University, App Development Essentials, Code Learn, App Inventor (Visual)
D3 (data visualization) Data Visualization for the Web, Dashing D3, D3 Tips & Tricks
SQL (Databases) SQL Zoo, SQL @Stanford, Essentail SQL, SQL for Nerds
Everything Else Udacity,, Coursera, Udemy$, Lynda$, Pluralsight$,Treehouse$, Open Consortium, One Month Rails$

Teach Kids to Code

If there are kids in the family, you should download either Tynker (Android/iOS) or the Hopscotch app for iPad and they can learn the basics of programming through games and puzzles.

There’s also Scratch, an MIT project that allows kids to program their own stories and games visually. Scratch is available as a web app or you can download it on your Mac/Windows/Linux computer for offline use. Blockly and Alice are some other desktop apps that will introduce the concepts of computer progamming to your children.

On a related note, the following chart from Google Trends shows the relatively search popularity of various programming languages over the last 5 years. JavaScript clearly has maintained the lead.

[Source : Amit Agrwal]

Editing the sudoers file in Redhat based systems


If you have ever freshly installed a CentOS or a RedHat based system then it is quite possible that you have encountered that you cannot execute system level commands, even when you use sudo. The error –

Right now you might be pulling all your hair out in order to figure out why you can’t execute system level commands ?

What’s worth noticing is that when you become root you can execute any command you want.

But worry not, there is a solution. We need to edit the sudoers file in order to allow your user to be able to execute system level commands. To do that, you need to first become root.

Become root by su – Enter the root password when asked.

By default the sudoers file lives in  /etc/sudoers

YOU NEED TO BE REALLY CAREFUL while editing this file. Otherwise you can lose root access to your system forever and then the only way is to reinstall the OS all over again.

So, moving right along. After logging in as root if you run “visudo“. It will open up the sudoers file in the vi text editor. It is higly recommended that you edit the sudoers file using this particular command only.

Here you can see all of the permissions that have been setup. This is a heavily commented configuration file. If you are a first time vi user you wont be able to move anywhere as it is really different from other text editors.

You need to move down the file, by pressing j’

If you keep pressing ‘j’ you will come to this section,

You have to make changes here

Now keep pressing ‘j’ until your cursor comes just below line root ALL=(ALL) ALL

Press ‘i’ to get into inserting mode or the ‘typing mode’.

Type in your user name followed by ALL=(ALL) ALL

Syntax <username> ALL=(ALL) ALL

Example- prateek ALL=(ALL) ALL

By adding above line in sudoers file will allow the user ‘aby’ to run any commands anywhere. In particular, giving ‘aby’ administrator access.

Now its time to save the changes and close the sudoers file.

To do that –

1. Press ‘esc’
2. Type in :wq followed by enter

That’s how you change mode in vi and save, exit the file.

Phew, that was a lot but you are done! You have successfully added you user to the sudoers file. Now you can execute system level commands with ease. (You still need to give in your password though :P)