The best route into competency with the most powerful tool ever created is GNU/Linux. GNU/Linux is the best operating system because it’s control structure transparently displays what is going on inside the gearbox. If you learn The Windows, you have learned nothing but The Windows — if you learn GNU/Linux you have the foundations of computing at your finger tips. You can change everything — the Operating System, how devices are interpreted, what devices are interpreted. You can make your own electronic devices and write your own drivers for them. GNU/Linux runs on more processors and supports more hardware because it doesn’t waste any time trying to hide the computer from the user.
GNU is a tool-chain and collection of tools that allow you to, among other things, compile a kernel. Linux is the kernel. It’s a symbiotic kind of thing.
If I ever write my own C compiler and tool-chain and bootstrap a system with it I’ll refer to that system as a “Linux” system.
One way to go from complete novice to knowledgeable individual is as follows:
Download, install and familiarize yourself with Ubuntu It comes with a few thousand dollars worth of free legal multimedia software (depending on the bundle you choose) to sweeten the deal. It is easy to install and fiddle with and is a good place to start.
On your Ubuntu system, experiment with the Command Line
It’s just like back in Kindergarten when the teacher told you to use your words. GUI’s will never have the flexibility, power and speed of the command line. Ubuntu doens’t require it, so you will have to reach out to learn it, but it’s good because the Ubuntu installation will function like training wheels in the background when you get frustrated.
It sucks to try and operate your system from the shell before you know how to use it, which is why a lot of people mistakenly think GNU/Linux is hard. Everything is hard until you are good at it.
Once you understand a little about command line options, file systems booting and configuration, you are ready for Gentoo. Just jump in and read the manual cover to cover, and then try following the instructions exactly. Start using the online help resources — there is a Wiki, and mailing lists and an IRC — I’ll let you find them yourself. Learn the etiquette of how to ask for help, and communicate with the online development community.
The real magic of the command line comes from Bash scripts (the diligent will already have gotten here)
Finally you should build a complete Linux system from scratch. There are certain subtleties you just wont get till you do this, and there is a great project which has been put together to make this easier, so that you can learn useful things and not get bogged down. It’s like that “rebuilding your carburetor” kit for beginning mechanics.
The project is called Linux From Scratch, or LFS.
Linux from Scratch should open your eyes as to what open source is really all about — you download and build the source code that is maintained by hundreds of communities all over the world. This experience should prevent you from getting stuck in repository purgatory, where you can’t run software unless it is listed in your distributions repository list. What the hell is the point of running Linux if you are going to limit yourself like that?
(I don’t use an LFS system, I just did one as a learning project. I run Gentoo, it gives a lot of the advantages of LFS, while consolidating a lot of the busy work into some very elegant Python scripts. Most of all it has a great community of bright and committed developers.)
C programming — lots of hype about lots of languages. Learn C.
OOOOHHH but Haskell but Python but Lisp but Befunge but LOLlanguage…
Once, around the time of the discovery of fire, there was a large population of people that thought mastering fire would be too difficult so they didn’t. The rest of us killed them, cooked them and ate them.
And we are still hungry.
Here is a great article on compilers and why they are less complex than you think.
Here is a fantastic article on the two types of programmers that elicits a delightful range of squawking from the second type. You should HEAR what they are saying about this article in Visual Basic classrooms (or whatever) the world over.
No comments yet.