This is a re-post of a blog post I wrote for my department blog couple years ago. I just read it again and I found it still relevant.
For those of you who have been to my office or have taken my classes will know that I am a big Linux fan. I started to use a little bit of Linux since early 2000. But I was “converted” completely around 2007 or 2008. Since then, Linux is my main OS. But first things first, I want to emphasize that I am not an MS hater. I used most of the MS OSes before, from MSDOS, Win3.x, Win95, Win98, WinME (yes,it is a horrible one), Win2000, WinXP, Vista, and Win 7. (Sorry, Win 8. I don’t see that I may own any more new Windows device soon in the future. And Mac, yeah, I know you are cool. But everything I need is offered by Linux already. I am not sure I want to pay the premium for you.)
Even though I only started using Linux as the main OS of my computers for the last several years, I have been exposed to the Unix-like system quite a bit earlier. Back in the days of early 90’s (yeah, I am old, at least quite a bit older than many of you reading this) when I was an undergrad student, workstations were popular and we had to telnet to some mainframe computers to do programming assignments. And interestingly, the Unix commands I learned then are almost identical to the Linux commands I use now.
I guess you see why I am writing all this… because while I see some of you are Linux experts, it just came to me that many of the students I met here have little exposure of Unix-like systems. Of course, I myself am more or less a user only rather than a realexpert. But I think that some experience to Unixlike system is essential to any electrical/computer/tel ecom engineers. I can think of many reasons for that. Just name a few,
1). Linux is ubiquitous. It is used by different devices, from very small embedded systems, to enormous mainframes and super computers.
2). Linux is free. And so do many tools on its platform aswell. Need to typeset your paper? Use Latex/Kile. Need to edit your photo? Use GIMP. Need to dosome math? Use Octave. Of course, some of this software is available on Windows as well. But it is often way easier to install them on Linux than Windows because most of them were developed on theformer natively.
3). Linux is reallyfree. Not to mention that the commonly used application software is free on Linux. Some very sophisticate or specialized software is free there also. Just name a few, ns-2/3 for network simulation, zoneminder for security system, and musescore for music composition and notation. And you can even setup a professional (and completely free) web server at home with Linux in an hour or so.
4). Your future boss wants you to know it. Because of the above, there is a good chance that your future bosses would like someone to at least familiar withthe OS. So being acquaint with Linux will allow you to access to many more possible positions in the job market.
If the above reason is not sufficient for you to start playing with Linux, here is another one: using Linux/Unix-like system makes one more productive. Okay. It sounds a bit subjective and I am not sure if anyone does any statistical study for that. But there are indeed quite a few productivity features that Unix-like system has offered for decades while one is still waiting for MS to catch up. The most noticeable one is virtual desktop. I just can’t understand whyMS still doesn’t implement that one. Another very useful productive feature is packaging systemsfor software installation. Okay, MS finally got this one eventually and we have “apps for windows”… But when I say Linux can make one more productive. The first thing came to my mind are not the above. What is more important to me is that Linux comes with lots of useful built-in command line tools. Yes. I mean old fashion command line tools. I know everyone likes GUI and command line stuffs seem scary and difficult to use. But GUI tools tend to become obsolete much faster than command line tools. As I mentioned earlier, I am still using the commands such as sed/grep/cut/find/tr that I learned 20 years ago. And those commands were introduced like 40 years ago. So your time learning those things won’t be wasted soon in the future. In contrast, every Office version looks a bit different and it takes time to adapt a new one!
To be fair, Windows provide some batch commands also. But they are less powerful and more importantly, far less portable outside the windows world.In contrast, you can run those Linux commands with little modification on a Mac right away. Besides, one can use these tools on Windows too if they really want to. For example, by installing a Linux layer, such as Cygwin, on top of windows. But honestly, it just makes life complicated.
Actually, not just command line tools are available on Linux, everything needs to be done can be done with them alone. By design, GUI tools on Linux are really just wrappers for these “primitive” commands. Therefore, one can always fall back to these commands and get things done especially when resources are really limited. For example, at this right moment, I am connecting to my office desktop using ssh even though I am in a time zone 13 hours away from Tulsa. If I had a windows box, the remote connection would definitely be unusable as the GUI stuffs would have sucked up so much resources that the poor connection here just couldn’t afford it.
1 Okay, Cygwin may seem like a godsend for Windows veteranswho want to start playing with Linux. But frankly, I would not recommend Cygwin to anyone Linux newbies. Cygwin is far less user friendly than modern Linux distros like Ubuntu. One canencounter way more problems installing and running any software on Cygwin than on distro like Ubuntu.
For those who are still not convinced, let me illustrate the power of Linux with an example task that I do occasionally. From time to time, my collaborator generates many figures in eps format but we actually need them in pdf format instead. And often we have the files scattered in several subfolders (say, under the current folder) and I have to convert all the files. Imagine that if someone were using Windows, first he or she would need to figure out how to convert eps file to pdf format as there is no built-in tools for that. Maybe someone eventually found some software (most likely not free) but then he would still need to find a way to convert all of them efficiently. If he was very lucky, maybe there was a batch conversion function offered by the software. But at many times, he would have ended up wasting an hour more converting the files one by one manually even after paying like $20 for the software.
On a contrary, if you use Linux and are knowledgeable with some Linux commands, you are really lucky in such situation. All the hassle can be done in a single line:
find . -name "*.eps" -print | sed 's/\(.*\)\.eps/ps2pdf "\1.eps" "\1.pdf"/' |sh
The command seems complicated but is actually very easy to understand. It is really just a cascade of three commands linked by the pipe character “|”. The firstcommand, find . -name “*.eps” -print, simply search for all eps files under the current folder including all the subfolders. The second command, sed ‘s/\(.*\)\.eps/ps2pdf “\1.eps” “\1.pdf/”’, tries to replace each eps file, say with a name ‘XXX.eps’, by a command string ‘ps2pdf “XXX.eps” “XXX.pdf” ‘. And the third command, sh, simply executes the command string created in the previous step.
Okay, this definitely is getting too long and I probably should stop here. And this finishes my advice (rant) of why all engineering students should know (and use) Linux. Actually, I also believe all graduate engineering students should use Latex (instead of Words) for their papers. But maybe I will write about it some other time.