Have you looked at rsnapshot?
It's based on this article:
http://www.mikerubel.org/computers/rsync_snapshots/
i definitely second dreamhost. They had a bit of a screwup with billing a while back (search the web), but was quickly reversed. And as the other person said, i haven't had any problems and what they give you for the money is great.
another good choice if you want a dedicated server and have a bit more to spend is m5hosting. they let you pretty much pick your OS of choice (*BSD or the main Linux distros) and give you root access. their customer service is also fantastic.
The best stuff to read after you think you've got the basics are anti-patterns which show you what not to do. A lot of that stuff can be quite eye opening to read. One of the best books on that topic is Effective Java by Joshua Bloch. Also, search the web for sites like this one: http://www.odi.ch/prog/design/newbies.php
Also, not a book per se, but if you do write some code it's possible to learn more by analyzing the code with tools like findbugs which will show you a list of things wrong with your code. Even professional programmers can learn something from these kinds of tools.
Always draw your curves, then plot your reading.