Originally Published: Friday, 30 June 2000 Author: Rob Bos
Published to: featured_articles/Featured Articles Page: 1/1 - [Printable]

Waking Up

Some days, you feel as if everything you've believed, for weeks, months, years, and decades, is suddenly wrong. You are forced to reevaluate what had been formerly held as an assumption beyond question. This happens in little things as well as large: when you suddenly grok a program in its entirety; or suddenly see the pattern, the order behind a system of organisation that formerly had been incomprehensibly vague and undefined.

   Page 1 of 1  

Some days, you feel as if everything you've believed, for weeks, months, years, and decades, is suddenly wrong. You are forced to reevaluate what had been formerly held as an assumption beyond question. This happens in little things as well as large: when you suddenly grok a program in its entirety; or suddenly see the pattern, the order behind a system of organisation that formerly had been incomprehensibly vague and undefined.

This is part of life. We take in information, think, build structures of thought unconsciously in our mind, and when suddenly that structure is complete, it bursts into our consciousness and changes everything. This feeling of completeness, of seeing the whole of a structure, is a fundamental part of understanding Linux. Out of chaos comes beautiful order. Vagueness turns into flexibility. Confusion turns into choice. Argumentation and hostility suddenly become diversity and productive conflict.

Comprehending the overall structure of Linux isn't important. That comes in time. To understand it, start with the small things. Notice that every program keeps user-specific configurations in that user's home directory, and that every program keeps global configuration files in /etc. Understanding this is a good thing. Notice that all devices on your computer can be referenced in /dev.

The key to understanding big things is to understand little things, bit by bit. Don't "LEARN LINUX," the big, messy, hard-to-understand, tangled, confusing mess. Start by learning how to use ls, mv, cp, cat, cd, and pico (or vi, if you're feeling adventurous). Get a feel for those tools, and how they work. With time, their place in the overall structure becomes apparent. Don't try to "MAKE YOUR SOUNDCARD WORK," first learn how Linux handles soundcards, and by extension, how it handles modules (drivers which aren't compiled into the kernel).

Furthermore, generalise what you've learned as much as possible. What helps you make your sound card work will also help you to make your Ethernet card, your Zip drive, or your USB device work. What helps you send data across a network can be used for many other things.

Sometimes it can be frustrating to look at the large structure that is Linux and see so much left to be understood. Even the most basic structure is rife with interesting points and snags. One educational thing to do is to build a Linux distribution from the ground up -- something very simple that fits on to a floppy.

Every tool you understand, every program that you add to your vocabulary, every new grammatical structure that you learn, and every new sentence that you put together is a unique moment of understanding. Learning how to do one more thing, and knowing how to generalise it to do other things, is valuable and powerful. Over time, those understandings encompass greater and more complex things, or finer and finer-tuned ways of doing the same things. You wake up, in greater and greater leaps.

Soon, I'm going to understand the particular problems I'm working on -- it's just a matter of time and hard work. Every day brings new insights, a greater awareness of the world around me, another small part of the larger puzzle. Even Linux is just another infinitely complex part of a still larger puzzle; and the same rules, I think, apply. What you learn in Linux can be generalised to other areas. The principle of never attacking a problem in one big go is something that applies on a wider scale -- in almost everything, in fact -- and shows up in various forms. "Don't change the world; just change your little part of it" is a corollary of this idea, among many others.

One of the important ideas surrounding Linux is the fact that all things are part of a larger picture. The existence of any one program is the corollary of the purpose of its existence. This works in real life, too: small principles are the corollaries of larger principles, just as small programs imply larger programs that use them. Understanding the small programs or concepts by themselves is important to understanding the large program or concept, but once the large program or concept is understood, the smaller ones are simply corollaries or subroutines.

Learning Linux is like that. A strong understanding of small things will let you understand big things, in time. Patience is a good thing.

Rob Bos (rbos@linux.com) has had an interesting week and is feeling a touch philosophical.





   Page 1 of 1