Learn Programming

  • Learn Git By Trying It (Online via GitHub)
    • This fantastic little web app will teach you Git through an interactive web based terminal tutorial series. It’s extremely useful for people with no Git experience wanting to learn Git.
  • Learn HTML from scratch
    • Starting from the very beginning, with no previous knowledge assumed, learn HTML and CSS. Excellent resource to go through before learning backend languages like PHP, Ruby, or Python, and gives you a solid foundation for learning JavaScript.
  • Learn JavaScript from scratch
    • After you understand the fundamentals of HTML & CSS, you’re ready to tackle JavaScript, which will allow you to add dynamic behavior to your HTML pages.
  • Learn PHP The Right Way
    • A fantastic resource for people getting into PHP. It discusses many of the pitfalls of new PHP programmers, and discusses various best practices.
  • A Beginner’s Guide to Ruby on Rails
    • This website will guide you through learning Ruby on Rails, a modern web framework that powers many large scale web applications. Twitter first started out as a Ruby on Rails application!
  • Learn Code The Hard Way
    • A great website that teaches programming the way I learned it and the way I teach others. I find their books extremely useful and easy to follow. I’m also a huge fan of not using an IDE when you first start out which is what they preach. (Here is the free link for Ruby)
  • Programming Guide for Gamers
    • A fantastic resource that has a breakdown of the different stages involved in game development. It’s a great resource for beginner developers looking to get into Game Development, and was sent to me by a young developer getting into programming.
  • Beginning Game Programming (in SDL)
    • A somewhat antiquated guide to learning programming with SDL, it is nevertheless a comprehensive and easy to follow resource that will give you a solid understanding of the basics of game development.
  • Algorithms, 4th Edition (on
    • Fantastic resource for learning the fundamentals of algorithms, put online by Princeton university.
  • What every computer science major should know
    • Whether you’re learning programming on your own, going to college, attending university, or already in the industry, this is a fantastic resource to test your knowledge, and see what areas you need to improve upon.

Practice Makes Perfect

Want to practice your programming skills, but need some ideas? Check out this list of resources:

  • Karan’s Mega Project List
    • A list of practical projects that anyone can solve in any programming language. These projects are divided in multiple categories, and each category has its own folder. This list should keep you busy for quite a while.

Miscellaneous References

  • Beej’s Guide to Network Programming
    • This is a classic reference for network programming, and provides a very solid, low level understanding of network programming. I recommend this to ALL web developers, as it will help you understand the networking layer/stack better, and can make it easier to troubleshoot.
  • Operating Systems: Three Easy Pieces (free online book)
    • The book is centered around three conceptual pieces that are fundamental to operating systems: virtualization, concurrency, and persistence. In understanding the conceptual, you will also learn the practical, including how an operating system does things like schedule the CPU, manage memory, and store files persistently. Lots of fun stuff!