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.