I want to learn everything I can about Computers and Software in general, I want to be able to spot a problem and say OK I can debug that or fix that, I want to develop programs for my customized needs (firewalls and random utilities), I want to learn hardware and I want to learn software.

Instead of switching my major which I almost done with i was wondering if any of you had any book recommendations or links that I can follow and start my new hobby. May it be for Linux or Windows. More interest in the former.

Thanks in advance.

rzrgenesys187

September 21st, 2008, 03:51 AM

You can find tons of free e-books by searching google. For starters here's a few I have bookmarked

Electrical Engineering Courses (http://education-portal.com/articles/5_Universities_with_Free_Online_Electrical_Enginee ring_Courses.html) (Not sure how low into computers you want to understand but you should find some info about digital logic here :)

Programming and Computer Science (http://www.techbooksforfree.com/)

List of websites where you can download e-books (http://www.hongkiat.com/blog/20-best-websites-to-download-free-e-books/)

Linux E-books (http://freebooks.homelinux.org/) This was down when I just tried it, but in case it's just my computer or it will be back up I figured I'd include it.

Note: I found alot of good resources with Stumble (https://addons.mozilla.org/en-US/firefox/addon/138). You can find all kinds of cool things for linux/programming/etc with it

MaxIBoy

September 21st, 2008, 05:15 AM

Well, Windows has no shortage of problems to debug... :grin:

Here is my advice:

The best way to learn how to fix software problems is by breaking things. The best way to break things is by trying something new, something you don't feel entirely confident doing. After that, you'll learn from repairing the inevitable screw-ups. The side benefit is that once you've fixed it, you'll have some new gadget or toy to play with and brag about.
As a subset of the previous item, learn the BASH shell inside and out. You'll thank yourself if you mess up X somehow. You'll also thank yourself when you realize how much easier it is to use for certain tasks. (It's very useful to learn regular expressions.)
Hardware is very easy to learn. Learning hardware by trial and error is a very poor idea, partly because it's expensive, and partly because it's hard to make errors. Just remember to NEVER EVER force something into a hole that doesn't fit. Also remember that static electricity is BAD. Don't set your electronics down on a carpet, and ground yourself before handling them. (You can ground yourself by touching any piece of metal which is connected to the actual ground. A good one is to touch the sink faucet, although that only works if the faucet and your plumbing are both made of metal.)
The best way to learn to create software is by "scratching your itches." If you can't find a program that does what you need, make it yourself. Might I suggest Python as a good first programming language. Python programs run much slower than programs written in most other languages, but you're not going to notice the slowness until you start making 3D games or something like that. Python is an absolute joy to use and more than sufficient for just about anything.