Download and listen to old episodes of
Linux Reality. Linux Reality was a Linux podcast and is still a perfect introduction to a lot of the concepts that make Linux what it is.
As for programming, I recommend getting a good grip on the
Python programming language, and then moving on to either
Java or
C. Java is probably the most friendly for the beginner while still teaching you the basic, valuable tenets of programming. C/C++, on the other hand, is the language(s) used to write a lot of the most common Linux tools you'll be using.
But the best advice I ever got (and the only real advice I give very frequently) is to always look for and favor the commandline way of doing things. Instead of using gedit, open your text files with
vim or
emacs. Instead of using gmail in your browser or Thunderbird to check your email, try using
alpine or
mutt. These types of applications usually encourage you to learn more about how computers work under the graphical interface and they often are a lot more powerful than their "friendlier" counterparts.