You-Dont-Know-JS  is a free online book series that is a great reference for brushing up on more advanced topics.
MDN Reference : this is the best documentation out there. Always have a tab open and try reading the actual documentation on how things work. This will be very hard at first but will allow you to become a very strong developer.
I also recommend you avoid https://www.w3schools.com/. Google often puts W3Schools at the top when searching for what a method does, but often times it is out of date or provides technically incorrect information.
Very useful day-to-day and first place I go:
You can also pick up small gig building more (and better) websites for local businesses. There's always a dumpy restaurant wanting a new website for few hundred bucks. The time you would spend with a textbook / tutorial, you can also consider synchronously apply them to real life commercial use. Also, you know Java and probably a lot of backend / db stuffs... you can bundle the whole stack together and build business solutions too instead of just "websites". Like a simple restaurant POS UI, sends order to kitchen kind of system... again, depending on how much free time you have and willingness to code for little pay just to learn.
JS / Front End Dev is one of the best setup to pair up with small jobs like that IMO.
Disclaimer: Never an academia kind of person, I take forever to go through any book. I found myself learn faster when I can go hands-on and fail within reasonable comforts. Now 15+ years into front end, I consider myself doing quite alright...
That's really all you need to get started.
I've heard people say good things about this book:
But I've never read it myself.
There are any number of js frameworks which will probably abstract away most of the headaches you might have, and depending on what you're actually trying to accomplish, you may not need a lot of js at all. If you don't want to use client-side templating, for instance, and there's no reason to, then just skip it. Push as much of it to the backend in the language of your choice as you can.
Effective Java — http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp...
POODR (Ruby) — http://www.poodr.com/
There is of course also the gang of 4 language agnostic classic on design patterns http://www.amazon.com/Design-Patterns-Elements-Reusable-Obje...
I think I've listened to every podcast on software engineering radio a few times . The older ones are especially nice because they usually pick a specific topic and cover the high points. I liked that I could listen to it while I was driving, or otherwise not in front of a computer.
I've also got Introduction to Algorithms, which I use as a reference, sometimes. I switched over to The Algorithm Design Manual  after I saw it referenced in an older Steve Yegge post . I read through the intro and it seemed like a book that would be more appropriate from an autodidactic standpoint. I really have no idea if that's going to pan out, since I'm not that far into it, but we'll see, for sure. Doesn't kill me to have an extra algorithms book laying about, though, and I've always got intro to algorithms for cross reference. I've found that I really need to have as many sources available as possible when I'm learning alone. Usually I don't get something until the fifth person describes it from the tenth different angle.
That's most of what I can think of off hand. I really enjoyed The Joy of Clojure , though haven't checked out the newer version. Programming Collective Intelligence  is a fun book, and is what made me want to go back down the maths route to get more into machine learning.
And of course habitually reading hacker news for an hour or three every night :)
So that's my totally inexpert list of random stuff that I enjoy
These two are a great start.
In addition to LPTHW and dbond's very complete suggestions:
$ sudo apt-get install python-doc
This is not installed by default. It will install the entire python.org documentation site, probably at /usr/share/doc/python/html/index.html
Decide whether you want to use python2 or python3. Python 2.7 is probably what's installed by default on your linux distro (unless you use Arch). The following is not in the installed docs, it's an external site:
Read PEP 8
$ aptitude search python |grep framework
$ sudo apt-get install sqlite3
Install a database. sqlite is lightweight and more than good enough for learning, and won't bog you down with learning how to run a database server. Alligators and swamps ...
I wouldn't bother installing a web server, python comes with a rudimentary web server module.
General background on python web programming: (skim it)
The module you'll likely use to play around:
Learn the python debugger, it's rudimentary but very helpful when you're learning.
Learn the python REPL, or the interpreter as they call it in the docs.
Install, learn and use a better python REPL:
sudo apt-get install ipython
If you can afford it, Oreilly has some good ebooks.
If you can't afford it, but you can afford the weight, search for books you like on AbeBooks: (used or internation edition books)
Dive Into Python is available online and downloadable: http://www.diveintopython.net/
Eventually you'll want to know more about sql: http://news.ycombinator.com/item?id=5087439
Learn you a shell:
Install vim and emacs and decide which one you like, but any simple arrow-key-based editor that comes with your desktop is good enough to get started.
Install git, eventually you'll lose some work and you'll see the light. Just go real basic with git if you haven't done much source control before. Don't get bogged down in learning git, you want to learn python and web programming. As you go, you'll eventually want to know more; you'll know when that is.
$ sudo apt-get install git
Appropriate first web projects would be any of the example projects that come with the lightweight framework docs.
Appropriate first python-specific projects would be the same, in whatever python tutorials you like.
Appropriate next projects would be whatever catches your interest as you're going through all of the above. Keep a notebook/file of project ideas. Actually that would be a nice first project right there, a simple web app for a project notebook.
EDIT: Also, learn to rely on the man pages.
$ man man
$ man bash
$ man python
$ man -k python
$ man woman
No manual entry for woman
Most people will recommend: http://shop.oreilly.com/product/9780596517748.do
This authoritative book scrapes away these bad features
readable, and maintainable than the language as a
whole-a subset you can use to create truly extensible
and efficient code.
Doing a couple of backbone.js tutorials may be a bit of an eye-opener too.
It's possible that GWT and Java are the best fit for you, but don't pigeonhole yourself by thinking that they are the only good options out there.
A suggestion to the authors. Purchase this book:
... then go through the book with a fine-tooth comb, and every time it describes something as a "bad part" or an "awful part", delete or fix that misfeature in TypeScript.
I would repeat the exact same argument for using SASS or LESS instead of CSS. There is no good reason to torture yourself with CSS instead of these better languages. It's very clear that there is such thing as one language that is much better than another in every practical sense.
No Starch, The Book of CSS3: http://shop.oreilly.com/product/9781593272869.do
O’Reilly, bash Cookbook: http://shop.oreilly.com/product/9780596526788.do
O’Reilly, CSS: The Missing Manual, 2nd Edition: http://shop.oreilly.com/product/9780596802455.do
O’Reilly, Mastering Regular Expressions, 3rd Edition: http://shop.oreilly.com/product/9780596528126.do
O’Reilly, The Art of SEO, 2nd Edition: http://shop.oreilly.com/product/0636920019091.do
3. Learn SQL (the language)
4. Pick an implementation
MySQL, PostgreSQL, SQL Server, Oracle
After that, most application development languages are just syntax. Pick what feels best.
Learn how to use Ajax to tie client-side requests to server-side requests and you're marketable.
Now for a language recommendation. I am a Ruby programmer, so I've got a pretty heavy lean towards that.
Ruby is an exceptionally easy language to learn. There's a book called Learn to Program written by Chris Pine (http://pine.fm/LearnToProgram/) which is an amazing beginning to getting into Ruby.
Past that, there's the Well-Grounded Rubyist by David A. Black (http://manning.com/black2) which covers all the things from basic Ruby up to medium-advanced levels of Ruby). There's also Programming Ruby 1.9 by the Pragmatic Programmers (http://pragprog.com/titles/ruby3/programming-ruby-1-9)
If you want to brush up your Ruby skills, the Ruby Koans (http://rubykoans.com/) are also pretty good.
After learning as much of those as you can, familarize yourself with Git by reading the Pro Git book by Scott Chacon (http://progit.org/), or if you choose another version control piece of software (Mercurial, Bazaar are good, SVN isn't and CVS is (I'm pretty sure) the work of demons).
Ah and before I forget, I've got The Developers Code (http://www.thedeveloperscode.com/) bookmarked for late-night reading and I'm quite enjoying it so far. Quite a lot of lessons in there that I have learned over my brief career, but ones I knew from the beginning.
One more final thing: you are new here and people will treat you like that. Be nice to them and they will be plenty nice back. Respect the fact that they have limited patience and may not wish to answer your questions eternally. They may also have other people asking them questions at the same time you are, or have other things they would like to be doing.
You will get better with practice. You show a keen want to learn, which is a great start. Never give it up. Nothing is "too hard" forever. Persist, and for the love of god, practice.
For a C reference, Harbison & Steele is excellent - http://www.amazon.com/Reference-Manual-Samuel-P-Harbison/dp/...
use node.js for the backend of your apps to come (start with https://www.duostack.com/ or for a quick hack http://jsapp.us/ )
do not use w3school ressources (they are wrong in critical cases) see http://w3fools.com/
oh yeah and: do not seek cross browser compatibility. it's frustrating. (after you are good it will work cross browser anyway (excluding IE)).
And of course there's all these fancy new things being built on top of it, like CoffeeScript. I just recently realized that it's not the horrible monster I always thought it was.
Personally, I'd pare that schedule right down. If you don't need a specific language, I'd start by learning the basics with Python. It's clear, readable, comes with a brilliant standard library, is very useful for all sorts of things and is a fairly 'normal' high-level language - what you learn in Python will be very broadly applicable.
You'll pick up HTML and SQL by default and while it's worth having a book or two on standby, you'll probably find yourself learning what you need as you need it.
As regards books:
Now go out and build something.
Books that I've really read and enjoyed:
Coders at Work
Programming Erlang: Software for a Concurrent World
The common theme: the authors reflect on the wyhs not just the hows. Programmer personality matters.
This teaches you the language. Jquery is just a library on top of that which is fairly simple to learn.
* Demonstrate some interesting JS libraries such as mootools or Raphaël - http://raphaeljs.com/
* For less technical folks, you could demonstrate new JS graphical capabilities, such as the porting of Quake and the chrome experiments gallery - http://www.chromeexperiments.com/
Particularly because it's purely about style and code organization, and not about the best way to get consistent DOM access between Gecko, WebKit, and IE.
"Programming Erlang" is a good introduction to both the language and the way of thinking about programs as highly distributed, multi-node systems:
"Real World Haskell" is a very fun book, with a ton of good lessons to absorb, and impressive real-world example code. Some of the later material is pretty dense, though, and I'd plan on spending some real effort working through it, especially if you haven't used any similar languages before. (I've done SML, Lisp, and Prolog, and I still had to work hard to understand parts of RWH.)
See this timeless rant for a tiny example (countering all the bad advice you see on a trivially easy feature):
You may wish to do some JS dev without a framework just to get a taste for the terrible truth. Then get jquery or one of the other excellent tools.
Also, some good tools:
wireshark (neé ethereal)
webby python code libs:
One of the most clear, logical, well-written programming books I've ever read. Douglas Crockford covers more ground in 153 pages than I ever thought was possible in a tech book. An absolute gem.
Get dozens of book recommendations delivered straight to your inbox every Thursday.