J-F Bilodeau's Blog @ chronogears.com

Friday, June 27, 2008

Firefox Adoption

I was intrigued by this article from PC Pro in the UK about the trailblazing pace of Firefox 3.0 adoption. It turns out that just after 10 days, the number of visitors using Firefox 3.0 is outnumbering those using Firefox 2.0. Wow! Talk about success!

Just for the fun of it, I looked at my (completely unscientific and scewed) site stats. It turns out that the number are very similar for me. Before June 17th, it turns out that Firefox 2.0 was already in the lead, followed by Firefox 3.0.

Here are the stats over a 32 day period:

Before June 17th:

Firefox 3 52.87%
Firefox 2 45.98%
Firefox 1 1.15%

Firefox Visitors Before Release June 17th

On June 17th and after:

Firefox 3 62.00%
Firefox 2 38.00%

Firefox Visitors After Release June 17th

For the sake of comparison, here's how Firefox fared between the other browsers.

Before June 17th:

Firefox 85.29%
Internet Explorer 11.76%
Mozilla 1.96%
Safari 0.98%


Firefox Visitors Before Release June 17th

On June 17th and after:

Firefox 86.21%
Internet Explorer 8.62%
Opera 5.17%

Firefox Visitors After Release June 17th

So, what conclusions should we draw behind these stats?

Well, to begin with, I don't think my site counts as a solid benchmark of Firefox for two reasons. I think it's fair to say that a lot of my visitors are like-minded and a lot of my regulars are friends and family. Most of them will be using Firefox.

The only surprise is that Firefox 3 was already ahead of Firefox 2 on my site 16 days before the release. This is most likely due to me encouraging my friends to try the latest beta.

I'm happy to see that Firefox is going to strong on my site — and not all of those visits are from people I know.

Beyond that, I'll let you draw your own conclusion.

Have a great day!

Labels: , ,

Sunday, May 11, 2008

Ubuntu Vs. Windows Vista

Wow. What can I say? I actually had a chance to work on Vista. Really! Since the hard disk in my work laptop died, I was given another portable pre-installed with Windows Vista.

What an experience. It's an HP dual core 1.9GHz 2G laptop with an nVidia graphics card. It should fly, right? Well, it flew about as gracefully as a turtle on it's back in the middle of the highway.

For comparison, I'm currently writing this blog from an older Gateway machine running on an AMD Turion 64 (single core), 1G of RAM with a Radeon XPress 200M. running (for now) Ubuntu 7.10. The machine was out of commission since I dropped an entire cup of coffee into the DVD drive. Thankfully, the folks at Farstar Networking in Alexandria did a fantastic job resurrecting it for a fraction of the cost I would have assumed it would have been.

However, back to Vista. For starters, after I had booted, the machine was already sucking up >700MB of ram. That leaves less than 1.3G to run my applications. That's not overly bad, since I've go to 2G on the HP, but my Gateway has only 1G. So, forget about running Vista on it. In Ubuntu, running the Gnome desktop with Compiz, Apache, MySQL, Firefox 2, Thunderbird and a system update, I'm not quite at the 475MB watermark.

I've heard a lot of folks complain about the performance of Vista. I finally had a chance to experience this first hand. Yuk! Is it ever SLOW. I could not even drag a window without the system studdering. Furthermore, I got kind notification from Norton Anti-Virus that my subscription was expired, and I should renew. What's that about my credit card number? I forgot what it's like to run an OS where you need an anti-virus. Let's not get into the endless array of continual popups.

Here's my first major gripe: No package manager. HP installed tons of crap on the laptop, including a (I would assume) redundant wireless connection manager, a trial version of Norton, tons of little application that are — supposedly — there to improve the user experience, and god knows what else. Time to clean the system!

I crack open the Add/Remove program, click on the first application, hold down control, and click on the next. Guess what? You can't! In Windows, you can only uninstall a single application at a time. Furthermore, it takes forever to remove the tiniest of application. Oh, and let's not get into the reboots. Remember, I'm cleaning this up because I need to get some work done. How much fun is it when all of a sudden, all your windows starts to close one after an other, and the machine reboots. Oh, I just love it when my operating system controls me. Sure! I love being a slave to the machine. Kiss your freedom goodbye.

On the other hand, I want to upgrade my Eee PC to Ubuntu 8.04. Unfortunately, I lacked disk space. No problem. I cracked open Synaptic package manager, selected a number of application for uninstallation, clicked Apply, and waited while the applications were removed. By the time the applications were removed, Windows Vista had finished booting, and was almost at the desktop. Of course, that was just one of the many reboots I had to do with Vista. None so far on the Eee PC!

Vista is slow. I asked one of my Windows Guru how I could turn off Areo. After digging around a bit, my guru showed me the option where I could chose the Windows Basic theme instead of Areo. What a difference this makes!!! I can move my Windows without feeling like the system is about to go into terminal shock. Here, on my Gateway, I've got Compiz working with the wobbly windows and all the fun graphic effects. It works great &mdash smooth as silk. Oh, and the Gateway is Windows Vista Capable. Not Ready, which means that Areo would not even work on the machine. My Eee PC is running eeeXubuntu with Compiz as well. It's pretty!

As a last point, one of my coworker asked about an 'upgrade path' from Vista Home to Vista Premium. He needed to upgrade Vista so he could run SQL Server Reporting Services (if I'm not mistaken). The software does not run on Windows Home. Not because Windows Home is incapable of running it, but because Microsoft thinks you should not. That is why I love free software. I come from a country that enjoys freedom of expression, movement, religion, etc. I cannot imagine myself relinquishing any of those fundamental freedoms for any price. It's the same thing with software.

I'm a free person. I refuse to pay for proprietary software that limits your freedom when there are perfectly good (better!) free solution out there.

In closing, my Eee PC quietly upgraded to Hardy Heron (Ubuntu 8.04). One reboot was all it took. I then reinstalled whatever applications I had removed. No reboots. Everything works. Don't you wish it was the same in Windows? (To be fair, the wireless card did not come back up. But it took two minutes of googling, and found a simple solution)

While I'm writing this on my Windows-Vista-Incapable Gateway laptop running Ubuntu 7.10, I'm upgrading to Hardy Heron. Can you work on your machine while you are upgrading your Windows version?

If the answer is no, I would then ask you: why not?

Oh, and you paid how much for Windows Vista? And that does not even include an office suite???

<SHOCK>!!!!</SHOCK>

Labels: , , , , , , , , , ,

Sunday, April 20, 2008

Discrimination Against Linux Is Discrimination

"This gas station only serves Ford and GM vehicles. Yes, the gas works in your Honda, but we will not serve you."

"This CD player only supports CDs from Sony or BMI, Yes, your United CD would work, but we won't play it."

"This website only serves Linux or MacOS X. Yes, your operating system will work, but we won't let you view it."

How does discrimination feel? I feel fortunate that I come from a country when discrimination against race, religion or gender is protected by the constitution. I've spend most of my life ignorant of racism, and I'm very happy about that.

However, going to a website, and being told that I cannot use it because I'm not using the 'browser of choice' or the 'operating system of choice' is very insulting — especially when the website works fine with my browser and operating system. This gives me an idea of how discrimination and racism must feel.

Dilbert.com recently entered a major overhaul. That's not a problem. What's a problem is that I was greeted with the message 'Windows 2000, Windows XP, Windows XP Media Center 2005, Mac OSX 10.3 or Mac OSX 10.4 is required to view this page.'

If you read any of my posts, you know that I run mostly Ubuntu Linux & Firefox. Thus, I was unable to enjoy part of the website. Now, before you gripe and say that Linux and Firefox do not have the capacity necessary to present the website, read on.

As someone who has developed a number of websites, I get suspicious when I'm told I can't use the site with my present configuration.

Should you be discriminated against, here are tips to help you.

Tip #1: If you are discriminated against, yell. The worst thing that you can do is decide "I'm never going back to that site." You are doing a disservice to yourself and to the site owner. Take a moment to use their comment or feedback page to tell them what you think. This is important. Some site owners may not realize the damage they are doing to their site. Help yourself by helping them. If they refuse to hear you, then leave, or try tip #2.

Tip #2: Use Firefox with the User Agent Switcher add-on. This add-on allows you to 'pretend' that you are a different browser on a different operating system. Using the agent switcher, I was able to use the section of the Dilbert's site by telling the site that I'm running (GASP!) Internet Explorer 7 running on Vista. Of course, I promptly wrote a (sorry to say) nasty message to the site telling them what I thought.

Tip #3: Don't switch! As long as your browser supports (most) of the W3C's recommendation, there is no reason for you to bow to discrimination. You have a right to choose your browser and your operating system.

I may disagree strongly with the browser that you use, but I will defend to the death your right to use it.

Labels: , , , ,

Thursday, April 17, 2008

What is Computer Programming?

Most computer users are mystified by computer. They know how to use them, but they're not sure how they work. There is also the concept of computer programming — the esoteric science used by developer to make the computer do something interesting.

In this article, I would like to give a quick introduction to what is computer programming. This is not a complete course or tutorial, but I think that this will be enough to give you a better idea of what computer programming is all about. Also, I hope this will will also show you why there are bugs in most of the applications we use day-to-day.

Let's start demystifying computers. To begin with, they are machines, and only machines. In my courses, I sometimes ask my students what is the most powerful computer on the planet. Some answer the brain. However, I can't accept that as an answer, because the human mind is not a computer...and that's a good thing! Though our minds are not capable of doing billions of calculations per second, it is able to think, which a computer is simply (as of yet) incapable of doing.

So, computers are not thinking machines. They are incapable of thought. But what are they? Fundamentally they are machine capable of storing information and processing that information. To process that information, a computer follows a sequence of precise instructions. Creating those instructions is what computer programming is all about.

Without a program (a series of instruction), a computer is incapable of doing anything. The instruction given by a computer programmer falls into certain categories.
  • Accessing memory — the ability to read and change what is in the memory of the computer
  • Performing calculations like additions, subtractions, multiplications, etc...
  • Evaluating conditions like 'is A greater than B' or 'is the number of characters entered less than 50'
  • Branching — or jumping around in the program. For example, if the password matches, allow entry, otherwise, display error message.
The last point — branching — is really what programming is all about. Telling the computer how to handle different scenarios.

To give instructions to a computer, a programmer uses a programming language. There are literally hundreds, if not thousands of programming languages out there. The reason there are so many languages is that some are better suited at certain task than others. Another way to view it is road vehicles. There are compacts cars, minivans, sports cars, buses, motorcycles, transport truck, etc. The reason there are so many different cars on the road is that each is better suited to one task or another.

Programming languages, as opposed to human languages, are very strict. Since computers don't think, if a period is missing, a comma is misplaced or a word is misspelled, the computer will not be able to make sense of the code. Chances are, the computer will not even execute the program. Even if the computer can execute the program, most likely, it will not do what you expect it to do. In other words, it encountered a bug. The programmer meant something, but told the computer something else. Call it a misunderstanding if you'd like.

Here's an example: The programmer tells the computer: 'The cat is shedding fur on the couch. Move it.' The computer comes back and says: 'I finished moving the couch. Next instruction?'

I'm a strong believer that the only way to learn something is to do it. Thus, to help you learn what is programming, we are going to look at code, and see it in action. I strongly recommend you play around with the code. Don't worry, you will not be able to break anything. If you mess up the code click the 'Reset' button, and it will be brought back to it's original state.

To explore programming, we'll use a language called JavaScript. It's a reasonably easy language to start with, and is readily available to most web browsers like Firefox and Internet Explorer.

Let's start with a simple example. We'll ask our computer to execute the 'alert' function. Look at the following code, and click 'Execute.'



If all went well, you should have seen a window popup with the text 'hello.' If it did not work, it may be that your browser has JavaScript disabled for one reason or another.

In the above example, we are asking the computer to execute the JavaScript 'alert' function. It's one of many functions we can use. We'll explore a couple more as we carry along.

For the fun of it, try to change the above code to:
  • alert(1+2);
  • alert("1+2");
  • alert(1+2*3);
  • alert(8/2);
  • alert("Hello " + " World!");
Did you try all of the example? Can you explain the difference between the first and second example? Also, in the third example, can you explain the result?

Once you are reasonably comfortable with the above example, let's move to the concept of variables. A variable is simply a placeholder for information. In other words, it's a chunck of memory we are reserving for our program, and we can put whatever value we like in it, and look at the content at any time. Try the following example:



Let's disect the above example. The first line which begins with 'var' tells JavaScript I would like to declare a variable named message. You choose the name of your variable. They can be any combination of letters and numbers, but they cannot begin with a number. You cannot use spaces or punctionation in the variable name. For example, message, message1, myvar, c123 are all valid names. On the other hand, 123, hello world, my*var are not valid names.

The second line tells JavaScript to store a value in the variable. Right now, we are storing the textual value 'Hello from a variable'. Try to replace the text by 2+2 and see what happens. Try it with and without the double quotes ("). Also, try to change the name of the variable to something else, like mymessage. Again, feel free to experiment.

You probably noticed that there is a semicolumn (;) at the end of each line. This is to tell JavaScript that we are finished a statement, just like in English we use a period (.) to indicate that we are finished a line.

In the next example, we will use two variables, as well as interact with the user. Try the following code:



I hope that it's not getting too sophisticated. It if seems like a lot of goobledygook, look at the program one line at a time.

The first line, 'var name,' declares a variable called name. In the next line, 'name = prompt("What is your name?");' we are asking JavaScript to prompt the user for their name, then store it in the variable called name.

The next too lines declare a second variable called message, then 'concatenate' (merges or puts together) three textual value: The text 'Hello, ', the text that the user entered, and finally, an exclamation mark. Notice how the plus (+) sign is used to tell JavaScript to concatenate text together.

Finally, the last line text JavaScript to display (alert) the content of the message variable.

Note that I could have reduced the lines of code. For example, you could have declared and initialize your variables on a single line, as follows:
var name = prompt("What is your name?");
var message = "Hello, " + name + "!";
alert(message);


The above code is equivalent to what we executed a moment ago. Try it now if you'd like.

Let's try another example, similar to the first. This time, we are going to calculate something.


Again, read the code line by line, and try to make sense of what's it's telling JavaScript to do. Have you noticed that we are using a new function called Number? What does it do? Try to remove it from the code, and see what happens.

The Number function tells JavaScript to take what is in the bracket, and convert to a number. The thing is, the prompt method assumes that whatever the user enters is going to be text. Thus, if we write 'number1+number2', JavaScript assumes that we'd like to concatenate two textual values. To force JavaScript to treat our variables as numbers, we use the Number function.

If the above explanation is not clear, remember that computers are not intelligent. They do not think. The prompt function returns the text of whatever the user types. Even if you type in a number, for JavaScript, it's text and not a number. We can tell the difference between a word and a letter, but JavaScript cannot. We have to explicitely tell it so. This is where programming can get a bit tedious. As a programmer, we have to explicitely tell the computer what to do, step-by-step. If you forget to tell the computer something, then the computer is not going to do it.

Though it may seem tedious, the fact that computer do not think is one of their strenght. Because they follow instructions to the letter without deviation, they ensure that a process is completed error-free. AS human being, we can think and rationalize, but we are prone to error. The only way a computer can do an error is if the programmer has introduced an error in their code. Errors in code are called bugs. I'm sure you heard that term before! So, now you know that whenever a program misbehaves, it's most likely because the programmer made a small error in their code. Please don't blame the poor programmer. It is very difficult to write bug-free code. If you're not convinced, try to write a simple program and see for yourself.

Speaking of simple programs, let's get back to our code. In the next example, we will to some actual programming. So far, the programs that we wrote simply execute one instruction after another. That's not real programming. Programming involves giving decision-making ability to our program. We will look at a simple example that will prompt the user for a password and let the program 'brach' in different direction depending on the password that has been entered.



Can you figure out what the 'secret' password is? Please note that this is only an example. The above code should never be used to protect a website.

We are using a new construct called an 'if' statement. This statement allows your to tell the computer to make a 'decision.' The double equal (==) operator tells JavaScript to compare if two values are the same. The reverse of that would be the != operator that compares to see if two values are different. How about you try it! Replace the == by != and see what happens now. Execute the code with a valid, and invalid password.

You have probably notices the curly brackets { }. These are used to 'group' statements together. They tell JavaScript that every statement between the opening and closing curly bracket should be executed one after another in that branch.

It is possible to 'chain' multiple if statements. Try the following code:


How many branches (else if) can you have? The answer is as many as you'd like.

If statements are one of many constructs that we can use to give define the behaviour of our program. In the next example, I would like to explore the concept of a loop. Loops allow you to tell the computer to repeat something over and over again while a condition is met. Try the following code:



The new construct that we are using is a do-while loop. You'll notice the use of curly bracket to indicate to JavaScript that everything between the do and the while should be executed for each iteration on the loop.

The above example will prompt the user until they enter a valid password. Note that the user cannot even cancel the action. Why not? The reason is, we haven't told the computer what to do if the user clicks the cancel button. Again, computers don't think. We have to tell it exactly what to do.

If you would like to be able to cancel, try the following code:


What you are seeing is starting to look more and more like a computer program. There are actually make ways a programmer can write the same program. The above example is just one.

If you've gotten this far, don't let the length of the program scare you. Disect it bit by bit, line by line. The only thing that is new is the && operator. This tells JavaScript that both comparison (password != "abc123" and password != "") have to be true to continue the loop. Since this is an overview of what computer programming is about, I won't spend too much time on sophisticated conditional statements. As always, feel free to experiment with it.

One last example, then we are moving to the grand finale. The next example will allow three tries to get the password right. If after three tries, the right password is not entered, we exit the loop. There is nothing really new in the next example, beyond merging together many of the concepts we have explored so far.



The only new construct here is the less-than operator (<). Can you see what is does? As long as the counter is less than three, we continue the loop. The moment it's greater than or equal to three, we exit the loop.

Notice the line 'counter = counter + 1;'. Can you figure out what it does? Everytime the loop is entered, we increase the value of the counter by one. For example, the first time we enter the loop, the counter is at zero. Thus, the line reads as 'counter = 0 + 1.' The value of the counter is increased from zero to one. At the next iteration, the line reads as 'counter = 1 + 1,' thus the counter is now at 2.

Again, there are many ways the above code could have been written. Because this is an introduction to what is programming and not an introduction to JavaScript, I'm not exploring all the possible approach here — I'm just exploring how to give instructions to the computer.

For our grand finale, I would like to give you a complete program. It's a game you most likely played in primary school. The computer will pick a number between 1 and 100. You have to guess what it is. The computer will tell you if you guess was less or greater than the secret number.

Look at the code. See if you can figure out what it does, and run it. This is more or less an example of a computer program.



Can you make sense of it? I wrote the code so that it would be reasonably easy to understand, but by the same token, I did not dumb it down too much. If you managed to follow me so far, I think you should be able to make sense of it. It may require you to look closely at the code, and even taking some note on paper, but do give it a try. You can even modify it if you'd like.


So, you've looked at computer code. You now know that computers have a memory (variables) and instructions that the machine will follow to the letter. Because computers do not think, you, as a programmer, are responsibile to tell the computer exactly what you want it to do. If your code does not execute exactly as you would expect, that's because there is a bug. Computer rarely do mistakes. For that matter, we might as well say that computers never do mistakes. So, if your code does not do what you expect it to do, it's not because the computer is wrong. It's because that's what you told the computer to do.

If you've enjoyed this little foray into the world of programming, there are plenty of great resources on the Internet available to you. You can, of course, continue to edit and modify any of the code on this page, and I encourage you to do so. To continue learning JavaScript, I personally would like to recommend w3schools.com. It's not the only place on the Internet, but it's one that I've used a lot. There are many programming languages you can learn, and JavaScript is only one of them. Also, there a number of best-practices that I did not use in the above examples. The given code is only meant as a learning tool, and not as enterprise-ready solutions.

One way or another, this article should have given you an understanding of what is computer programming — that is, giving very precise instruction to the computer. There's a lot more we can discuss and I'm sure you probably have questions. If you are looking for guidance as to where you would like to go next, or have any questions, please drop me a comment.

Or hey, if you created a cool program, please feel free to share it with us!

Enjoy the rest of your day!

Labels: , ,

Sunday, April 13, 2008

Enjoying the Asus Eee PC

Having just received my Eee PC, I'm still getting familliar with it's capabilities. The keyboard requires getting used to, but I'm getting better. As long as I don't have to use the right shift key too much, I can almost achieve the same typing speed as on a regular keyboard ;) All joking aside, once you get used to the keyboard, it's actually quite pleasant.

I got the 8G model, which means that I have a whooping 8 gigabytes of 'hard disk' space. While this is tiny compared to a regular hard-disk, which is usually over 100 gigabytes for a laptop. However, for my needs, I think that 8G, or even 4G should be enough. Since the Eee PC supports SD cards, I'm using a 4 gigabyte card for my /home partition (for Windows users, think My Documents).

The pre-installed operating system is a custom version of Xandros Linux (which is based in Ottawa). Though the default is fine for most people's need, I wanted something that gave me more -- so I installed eeeXubuntu. I removed the default Gnome games, Abiword and
Gnumeric to save space, and them promptly installed:

I've got ~640M of space left (which ought to be enough for anybody) on my system partition. Not too bad, considering I've got a practically complete portable development system.

One of my goals is to get Morrowind working with Cedega. So far, no joy, but I'm not about to give up. I know some folks got it working, so I'm sure I can as well.

If you are going to install eeeXubuntu or Ubuntu, be aware of the Eee Wiki. One of the coolest trick I found is how to enable the ALT+F11 key to make a window take the full screen. That really takes advantage of the 800x640 screen resolution. There are many more cool tricks on the page. Check it out!

Software for Windows seems to take up much more room than software for Linux. If anyone plans to run Windows on the Eee PC, I would like to recommend they consider using Google Docs. It is a word processor, spreadsheet and presentation package that runs in a web browser like Internet Explorer or Firefox. Using Google Docs does not require you to install and special software. As long as you are connected to the Internet, you can use it. Futhermore, Google Gears should eventually allow you to run online application offline.

Actually, I'm using Google Docs one my Eee PC right now to author this article. So far, the Eee PC turns out to be a fun, yet useful machine. My wife is starting to strongly hint that I'm spending too much time on it. Oups! I think I should wrap up this article, and spend some quality time with her! See ya!

(Hum... I'm a bit disappointed with the Google Docs' HTML exporter. I wish it did XHTML)

Labels: , , , , , , , , , , ,

Sunday, March 23, 2008

Is Linux Like Windows?

This is a follow-up to the article on 'What is Linux?'
I'll cut to the chase, and answer right away - no.
It is possible to set up Linux so that it looks very much like Windows, but under the hood, it is not Windows. We have to understand that Linux is very flexible and customizable. Someone with some technical knowledge, time and determination can install a Linux system exactly the way he or she would like. Those who are interested in truly learning Linux from the ground up can take a look at Gentoo or Linux From Scratch. This can be a great technical learning experience, but it is very technical.
If you would like a gentler introduction to Linux, I would heartily recommend Ubuntu.
Ubuntu is a free Linux distribution (distro amongst the initiate). A Linux distribution is a full-fledged, pre-packaged collection of software. Distros makes it easy and convenient to install and use the GNU/Linux operating system. Currently, Ubuntu is one of the most popular distributions due to its ease of use, stability and continued support. It is not the only popular distribution. If you are interested, you can also visit and/or try any of the following:

This is only a sample of some of the many distributions available. All of the above can be installed with minimal difficulty.
However, as mentioned above, Linux is not the same as Windows. It does not strive to be a carbon-copy of Windows, but an operating system that stands on its own merits.
Let's take a look at the important differences you will encounter between Linux & Windows.

No C:\ Drive
Yes. That's right. There is no A: drive, no C: drive and your DVD-ROM is not your D: drive. Your 'C:' drive is called the 'root directory.' Everything starts from the root directory. Also, where Windows uses the backslash (\) Linux uses the forward slash (/).
Here's a little cheat-sheet to help you get started:
C: drive/
My Documents/home/<<your name>>/Documents
Desktop/home/<<your name>>/Desktop
Settings/home/<<your name>>/
CD-ROM / DVD-ROM/media/cdrom
USB Flash Drive/media/<<drive name>>

Mac OS X users may recognize the above structure. Just replace /home/ by /Users/ and /media/ by /Volumes/.

Linux does not use file extensions
In Windows, a file ending with .doc is assumed to be a Word document and a file ending with .exe is an executable. In Linux, the extensions are usually meaningless, especially for executable files. So, firefox.exe becomes firefox, oowriter.exe becomes oowriter, and so on.

Files are case sensitive
In Windows, there can be only one file called letter.odt. It can be called letter.odt or LETTER.ODT, but it will be the same file.
In Linux, letter.odt, Letter.odt and LETTER.ODT are three different files. Furthermore, be aware that if you are asked to enter a command, it may be case sensitive.

No Viruses
Yes, you did read that correctly. There are no viruses in the wild for Linux. This means that you do not need an anti-virus. Should your friend or coworker kindly send you an email virus, you are immune. No need for McAfee or Norton.
I'm not saying that Linux will never have viruses, but I strongly doubt that it will develop the rich virus ecosystem that is present on Windows.

Windows Applications do not work on Linux
Many Windows applications have their equivalent in the Linux world. Actually, many of the applications used in the Linux world are becoming available in the Windows world as well.
Another cheat-sheet to get you started (free of charge!):

Microsoft OfficeOpenOffice.org
Internet ExplorerFirefox or Iceweasel
OutlookEvolution
Outlook ExpressThunderbird
Adobe PhotoshopThe GIMP

By the by, most of these programs are available for Windows if you would like to give them a spin.

No need to download programs
In the Windows world, to install an application like WinZip, it is necessary to go to the WinZip.com website, download the setup executable, run the installation program and then we can use the program.
In most distributions, there is a 'package manager' that does the work for you. In Ubuntu, the Add/Remove Program takes care of everything for you. Just select the program(s) you would like, click Install, and it's done. That's right -- no need to run around the web, manually download setup programs and doing the installation yourself.
Ubuntu Add/Remove Programs

It's Secure
Windows XP Service Pack 2 and Windows Vista are starting to take security seriously. However, Linux has been written with security from the very beginning. This means that you don't immediately have access to every component of your system by default. Linux may refuse to show you a file or run a program. This is for security reasons.
Should you need access to a secure resource, you may be prompted for your password or the 'root' password. Be aware that once you enter the root password, you have complete control over your system. If you want to, you can render your system complete unusable. Note that you can do the same with Windows, except that Windows will not prompt you for your password.

It's Free
Free as in free beer. Yes, you can get something for (nearly) nothing. I add nearly because you need an Internet connection, and maybe a blank CD. Also, some of your time may be required.
Linux is also free as in free speech, and that's the part that is truly valuable for me. Windows is controlled by Microsoft — not by me. Mac OS X is controlled by Apple — not by me. Linux is controlled by — me! — and you!
That's freedom!
However, I know that too much freedom can be intimidating. That's where distros come in handy. They pick the most common option, and pre-package everything for you so that you get up and running quickly. However, once you get the hang of your environment, you can start tweaking stuff, and customizing stuff.

So, how does one get started with Linux? Well, stick along, and in a later post, I would like to show you how you can try Linux risk free!

In the mean time, you are welcome to continue your research. I would recommend Wikipedia as a great place to start. If you can, talk to other Linux users, and find out what they have to say. I personally think it's a great operating system, and I'm excited that you are interested in knowing more.

— and no, I don't make money selling Linux. This is a labour of passion and love.

Labels: , , , , , , , , , ,