Thinking in Linux

I read a comment the other day, where the person said most new Linux users are still thinking in Windows. I made me wonder what that meant. Is it like that Clint Eastwood movie "Firefox Down" where he needs to think in Russian to make the plane fly? What does thinking in Linux mean? What would you do differently if you were "thinking in Linux" instead of "thinking in Windows?"

To me, "thinking in Windows" means I can find my answer under a menu or in a button/icon. Someone else has already run across all possible problems and has conveniently made some GUI interface to the answer. That’s nice: I don’t need to worry about how to do things as much as getting my job done. When the time comes, my answer is going to lie in the GUI somewhere.

To me, "thinking in Linux" means I need to string together a bunch of small programs to get my job done. No one ever thought of this before, and I need to write my own solution by creating a larger “program” out of smaller programs like cat, awk, and grep. I might have to write something in C. I might have to compile a larger program someone else has written. That’s scary: I need to find my own solution. When the time comes, my answer is going to lie in me.

Is either of those really correct, though? Will my answer be hiding under the menus like a beautiful Christmas present under colorful wrapping paper? It might be, in which case I didn’t even have to think, just plow through my work. Will I be able to string together a command line of sub-programs, pipes, and redirections that do what I need? Will I have to compile something? I might if it’s simple, but it’s not as easy as looking under a menu (and sure X programs have menus but run with me here for a second).

When "thinking in Linux" comes in handy is where you need to do something novel, when you need to innovate, when you’re off the beaten path and looking at new things. Your custom answer isn’t under any menu; you need to make that menu and that program yourself. In windows that’s hard. In Linux, well, it’s almost set up to give you a shot at success. String together what you need and make something that is the best possible solution for you.

Either way you want to think, you can use DSL. There are menus and icons if you need, but you also get the power of bash, perl, and tcc. I’m not telling you how to think, because sometimes you don’t have time to dig for a better answer and cut/copy/paste are all you need to do it. Thinking go beyond the stereotypes, and calls for an examination of the problems, the tools at hand, and finding the best path to the solution.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

well put

I think the ability to pipe is one of the most powerful features of a Linux system, and it's a concept which is foreign to a person whose only experience is Windows or Mac (prior to OSX). There is also, in most cases, a separation of application and graphical interface, which is another foreign concept to the Windows user. In a Windows environment, all available options are generally available through the push of a button, or in some cases entering options in a text field. DOS is considered archaic by most, and its current role in a Windows system is very limited, so gui is generally the only way to go. In Linux, if the GUI doesn't offer a particular option, you can bypass that gui and run the application from terminal or pipe with the desired option, since the interface is usually added on top of the application rather than being a vital part of the app.

Putting it simply, a large part of thinking Linux is realizing that what you see is not nearly all you get.

Windows Pro feels like Linux Flunkie

Every 6 months or so I get curious about how far a distro has come, so I revisit Red Hat, Mandrake, Fedora or recently DSL. I get a huge kick out of learning Linux and related technologies. But it's hard!

I can install and use software like Web and DB servers, but it's a challenge each time. For example, I think PostgreSQL is terrific but I can never remember how to allow TCP/IP connections and have to relearn this every time I install it. There is no config file change to accomodate this: you have to modify the startup script. This would not be so bad except even my advanced DOS batch file skills cannot make heads or tails of a complex shell script... I have no choice but to copy/paste without understanding. In the Windows world one expects a GUI tool with a checkbox or nicely labeled option... or a wizard interface.

Issues like this have perfectly legitimate explanations, but it keeps me going back to tools like WebMin to ease the setup and configuration burden I encounter. I know power is balanced with complexity, and I know my Linux installations can do practically anything once I learn how.

So I keep trying... it's too much fun not to.

Rob Gamble

Linux is not hard

O.K. But Linux is not hard in terms of usage and administration. I used to work with the next OS's in my life:
- OS RAFOS (USSR MainFrame aka IBM's one);
- SCO Unix;
- UnixWare;
- Linux since kernel 0.9.1;
- FreeBSD since 2.1;
- OpenBSD since 2.1;
- MS-DOS since 3.0;
- Tandem Non-STop UX;
- HP-UX;
- Sun Solaris (SPARC & Intel);
- QNX/Neutrino;
- Mac-OS;
- All windows family since 2.0
- some different exotic OSes like Inferno.

And after 15 years of programming, system integration and telco jobs I could say that Linux is not hard. Don't beleive so - try to establish Active Directory for 1500 people sitting in 14 different offices with Microsft Windows 2000/XP/2003 and try to make the same with Samba/LDAP. You will see the differences. At the same moment ordinary tasks like office works, HTML edition or multimedia under Linux is working seamless to MS. At the same moment you have a lot of documentation in Inet where you can read whatever you need. Just ask google for something.

P.S. If you want to try something hard - try to implement X.400/X.500 under Tandem Non-Stop UX. :)

P.P.S. Keep trying. Take it easy.