SumitBirla.com

Valid XHTML 1.0 Strict

Home » Writings » Windows vs. Linux

Windows vs. Linux Windows vs. Linux

Posted: November 27, 2003

"Either you are with us or against us," the words of a famous simple-minded man. The fact of the matter is that whether you are a Windows fan or a Linux fan, you are not completely satisfied with the current situation. The tendency to take sides borderlines the thinking patterns of the before-mentioned famous man. Sure, you may display loyalty to a certain camp and spend huge amounts of money to support it, or huge amounts of time trying to get it to compile. Perhaps this gives your life some meaning and that's great.

Over the years of fumbling around with varied technologies, I have come to the conclusion that there is no one side that is perfect and there is no one operating system that can do it all. Despite this, I am a linux fan and I will not keep that a secret in an attempt to keep this article neutral. I will, however, describe the reality that I encounter in everyday life - i.e. using MS Outlook to send emails and using Explorer to browse the web.

So, here is a scenario. I have written a dashing new application that will stream my latest photos directly to my mom. In the windows world -

1) I send an email to my mom -

"Mom, check out my photos. Click on http://sumitbirla.com/photos/new_app"

2) Mom clicks and voila - she has pictures on her desktop.
This is accomplished using Microsoft's ClickOnce deployment techology.

The same thing in the Linux world -

1) I send an email to my mom -

"Mom, I have written a new application that will let you browse my latest photos. Please download the source code from either ftp://sumitbirla.com/src/new_app.tar.gz or check out the latest from CVS. You will need the standard GCC, autoconf and maketools. Oh, and you will also need the latest version of libjpeg.so, libz.so and libpango.so. Make sure these are properly installed before you compile my new app. See ya."

2a) Mom downloads the latest code.
Reads the README and INSTALL files.
Runs ./configure
She does not have libpango.so
She downloads libpango source
Read the README and INSTALL files for libPango
Runs ./configure
Does not compile - "Invalid cast from pinter int* to float"
Mom wonders if all this is worth the trouble.

2b) Mom writes back - "thank you son, but I don't understand what the heck you are talking about. Bye."

As we all know, reponse 2b is more likely to occur. Most computers these days come pre-installed with Windows and the average person knows how to "click" on things and send email. This is a consistent interface enforced by some dubious Microsoft business practices. On the flip side, a simple word-processor install can take up 300 MB of your hard drive space. What in the world can take up so much space? I mean, how much code is that? A gazillion lines of VB code? Speaking of VB, anyone past 6th grade can create a VB application. Wow! Isn't that awesome. But this also implies that the programmer has no knowledge of

  1. How an operating system manages memory, paging, tasks, processes, scheduling etc.
  2. Good accepted software development practices.
  3. How to perform functionality and usability testing.

I have noticed that sometimes even people with degrees in Computer Science are not well educated. The result is that the application runs, but that is all it does. It does not give the user any satisfaction, utilizes unreal amount of resources and opens up the system to attacks from virii, worms, leeches and what-have-you. To give you an example, I have a Pentium 4 machine running at 2.4 GHz with 40 GB of disk space and 640 MB of RAM and the hard drive is spinning for no reason as I type this in notepad.

Meanwhile, not so far away, my linux embedded system does not have a hard drive. It is running off a CompactFlash chip on a 200 MHz machine with 64 MB of RAM. Most of the RAM is unused!

My latest project has been an attempt to build a solid-state computing device for my car. The purpose of this is to provide GPS assisted navigation and play mp3s. Simple, eh? Not so when you have the requirement of "no hard disk and no fans."

During the last year, I have looked far and wide for Single Board Computers and software that will help me accomplish this task. So, I first looked at windows XP - what are the requirements for a "non-sluggish response" system -

Okay, so maybe I exaggerate a little bit. But that is what I felt. It is close to impossible to have a fanless system with Windows XP. To be fair, I looked into Windows CE. Windows CE can boot from Flash memory and run from RAM. The requirements are - about 15 MB of disk space and 200 MHz or faster CPU with 64 MB of RAM. "Not too bad," I said to myself. And the GUI is pretty nice also. But you need to purchase licenses in order to run Windows CE. Also, how do I get a driver to control my radio card? The manufacturer only has drivers for Windows XP. So, I am stuck.

Then I looked at a penguin named Tux and wondered if it could (reference: The Little Engine That Could). The internet has a vast repository of information regarding Linux, so I set out to create an embedded version of it. The beauty of this is that there is no real difference between regular Linux and Embedded Linux. The Embedded version simply has all the unnecessary software and drivers removed. I was able to build a 1.5 MB version of Linux that runs on 8 MB of RAM. Now that is cool. Now what about drivers for that radio card? Well, it's there. Super!! I found mpg123 that plays mp3s utilizing less than 17% CPU on a 200 MHz fanless SBC. And when it came to GPS, there was absolutely no software that could do mapping and routing!!!!

There are plenty of software options in the windows world for GPS navigation. But none exists for Linux. This was truly disappointing. Another harsh reality of life - no perfect system.

We are back to square one. There are always decisions to be made and sides to be picked. For my professional career and everydays tasks such as browsing the web, I have chosen Micro$oft. For high-level application development, you cannot beat Visual Studio .Net. It is simply amazing (partly because MS has a dedicated Usability lab). And to stimulate my computer science genes, I have chosen Linux because it let's you control every detail down to the lowest levels of computing. It offers great flexibility at the cost of my spare time. And I forgot to mention stability - my fileserver once ran close to 2 years straight without requiring a reboot. That tells me that it is a well designed OS written by well-educated and talented programmers whose main objective isn't to make $$$ or to meet some deadline.

That's all folks. It is time to do something useful now - continue developing GPS software for Linux!



Note:
Due to the litigious nature of the society in which I live, I feel compelled to add the following disclaimers:

    1. The facts and numbers used in this article may or may not be accurate.
    2. Microsoft, ClickOnce, Penguin and Leeches are registered trademarks of Microsoft Corporation, United Penguins Association and Leeches Inc. respectively.