Don’t get me wrong. I’ve always been of the opinion that Dvorak didn’t give Linux enough of a chance. Even so, I was shocked by his glowing review of Ubuntu 8.10.

Ubuntu made such a good impression on him that Dvorak went from this:

Though the Linux community does not want to admit this, Linux has become a pale imitation of the evil OS it intends to replace. On some levels, Linux is better, but from most perspectives it is summarized as “not quite as good but a lot cheaper.”

To this:

…I seriously like the Ubuntu 8.10 implementation and will now install it permanently on my latest machines. It’s a winner…It’s so good that I’m a little annoyed with myself for not getting to it sooner.

I cannot wean myself off Windows altogether because, well, I write about Windows. But for ancillary machines that I put together where I need reliability and low price, I’m always going to see whether Ubuntu works. And if it does, that’s what gets installed.

If I had a small or mid-size company, I’d probably use only Linux and open-source software…

It’s about time.

For the full text of Dvorak’s post about switching to Ubuntu, just click here.  If you are considering trying Ubuntu but still need a little more convincing, here are the reasons I think you should be running Ubuntu:  A few good reasons to switch to Ubuntu.


Sherri Davidoff of posted an enlightening interview with Matt Knox who was previously employed writing adware for Direct Revenue.

A few highlights:

The good distributors would say, ‘This is ad-supported software.” Not-so-good distributors actually did distribute through Windows exploits. Also, some adware distributors would sell access. In their licensing terms, the EULA people agree to, they would say “in addition, we get to install any other software we feel like putting
on.” Of course, nobody reads EULAs, so a lot of people agreed to that. If they had, say, 4 million machines, which was a pretty good sized adware network, they would just go up to every other adware distributor and say “Hey! I’ve got 4 million machines. Do you want to pay 20 cents a machine? I’ll put you on all of them.” At the time there was basically no law around this. EULAs were recognized as contracts and all, so that’s pretty much how distribution happened.

Most adware targets Internet Explorer (IE) users because obviously they’re the biggest share of the market. In addition, they tend to be the less-savvy chunk of the market. If you’re using IE, then either you don’t care or you don’t know about all the vulnerabilities that IE has.

Sherri: In your professional opinion, how can people avoid adware?
Matt: Um, run UNIX.
Sherri: [laughs]
Matt: We did actually get the ad client working under Wine on Linux.
Sherri: That seems like a bit of a stretch!
Matt: That was a pretty limited market, I’d say.

Matt also goes into a lot of detail describing the different methods he employed to ensure that it was close to impossible to deactivate the adware once it was running.  Read all about it in the original article.  Thanks to Aaron Toponce and Bruce Schneier for pointing out this great interview.

The bottom line:  If you want to stay free of adware, don’t use Internet Explorer.  I’d recommend running Firefox in Ubuntu.

Last time, I covered some different ways of using SSH for remote access on a LAN or over the Internet, using RSA keys for secure authentication, and how to use GNU Screen to keep a process running after disconnecting your SSH session.  This time, I’ll talk about using SSH with X11 forwarding, using VNC with SSH, and making it all run faster by adding compression and changing the cipher of your SSH session.

X11 forwarding is a feature built into X which enables you to make use of graphical applications running on a server from another computer over the network (if the server has a GUI).  This technology enables you to use graphical tools to change settings or view files on the remote computer, or to forward graphical applications to your workstation which you might not otherwise have to ability (or desire) to install.  The forwarded applications will actually be running on the server, so your local computer will have it’s processor and memory free for other things.  To use X11 forwarding in Ubuntu, just add the -X flag to your SSH command like so:

ssh -X remoteuser@<remote IP address>

Easy, huh?  Now that you’re logged into the remote computer, you can try typing “nautilus” to launch the graphical File Manager.  Notice that the files displayed are those on the remote system, and not your local machine.  You could also try running “evince” to read some PDF’s you have on the server, or “eog” to browse your photo collection remotely.  You get the idea.  I find that forwarding VirtualBox is very useful.  Doing so enables you to use or administer Virtual Machines residing on your server, without having to install any software locally, and without taking up a big chuck of your memory.

X11 forwarding is very useful for making use of specific applications, but if you need remote access to the entire desktop you can use VNC.  VNC can be run over SSH in a variety of configurations, but I’ll show you one really easy way which uses X11 forwarding.   Before this will work, VNC access needs to be enabled on the remote computer.  You will also need the xtightvncviewer package installed.  You can install it from the command line by typing “sudo aptitude install xtightvncviewer”.  Now that you know how to use X11 forwarding, you can easily set up Ubuntu’s default VNC client Vino by SSHing into the remote system (remember the -X flag) and running the command “vino-preferences”.  On the General tab, all boxes should be checked except for “Ask you for confirmation”, and of course, setting a decent password is always a good idea.  After this is all set up, you can start VNC with the command “vncviewer localhost” from an existing connection, or in a single command from your local machine like this:

ssh -X user@<IP address> vncviewer localhost

While X11 forwarding can be extremely useful, it can also be quite slow, particularly across slower network connections or over the Internet.  To speed things up, you can instruct SSH to use compression (employing the same algorithm used by gzip) by adding the -C flag to your SSH command.

ssh -C user@<IP address>

You can also opt to use a faster but less secure cipher if you are willing to sacrifice some of the SSH connection’s security in exchange for increased performance.  There are a variety of ciphers available.  The default cipher used by SSH is AES (the Advanced Encryption Standard) which is extremely secure, and is approved for top secret information by the NSA.  However, it isn’t the fastest available.  A faster and still quite secure cipher is Blowfish, which is a good compromise if AES is too slow but you still want to keep the connection secure.  An even faster, but less secure cipher is Arcfour.  Arcfour has a few known vulnerabilities, but is still being used in WEP and WPA Wi-Fi encryption, Microsoft’s RDP protocol, and a number of other cryptosystems in spite of it’s flaws.

So, to use SSH with the speedier but still secure blowfish cipher, you would type:

ssh -c blowfish-cbc user@<IP address>

If you wanted to use Arcfour:

ssh -c arcfour user@<IP address>

Therefore, to connect to the remote system using SSH with X11 forwarding enabled, plus compression and the fast arcfour cipher, use:

ssh -c arcfour -XC user@<IP address>

Well, I hope you’ve found this useful.  If you have any questions or suggestions, please feel free to comment!

Next time, I’ll finish up this series with some tips on using Bash aliases to simplify the commands involved, as well as a couple other useful things you can do with SSH.  Thanks for reading!

I just found a great guide to making the most efficient use of your bash history.  If you commonly find yourself scrolling through your bash history with your arrow keys, this guide is for you.  In case you were wondering, Ubuntu uses emacs mode for command editing by default.  The cheatsheet can be found at the bottom of the post.  Thanks Peteris!

Microsoft used it’s highly effective business strategies to gain an effective monopoly in the computer software industry in the early 1990’s.  Since then, businesses have had very little choice when making decisions about what software to use, as the Windows/Office combination has become an effective standard, as everyone is now locked into Microsoft’s proprietary formats.  This lack of choice has caused Microsoft’s high priced products to continue to sell, irregardless of the product’s actual quality.  Corporate competition has been made near impossible as Microsoft’s highly profitable products sell, not based on value, but out of inertia.  Unfortunately for Microsoft, this lack of competition has enabled Microsoft to produce products of reduced quality, without a disruption in sales figures to mandate internal changes.  With the high cost/low value release of Windows Vista, corporations are becoming more apt to consider alternatives.  IBM is stepping into that vacuum and offering a low cost/high value alternative solution to the business desktop model which has the potential to shatter Microsoft’s stranglehold on the market.

Yesterday, IBM issued a Press Release announcing their new desktop solution which utilizes a combination of Ubuntu, IBM’s Lotus Symphony, and server hosted virtual desktops using a solution called VERDE from Virtual Bridges.

Here are a few highlights:

Compared to Microsoft-based desktops, this virtual desktop solution, including industry-leading components from IBM, Virtual Bridges and Canonical, is estimated on average to deliver cost savings from:

  • Licensing: cost avoidance of $500 to $800 per user on software license for Microsoft Office, Windows and all related products
  • Hardware: cost avoidance of around $258 per user since there is no need to upgrade hardware to support Windows Vista and Office 2007
  • Power consumption: cost avoidance of $40 to $145 per user from reduced power to run the configuration and $20 to $73 per user from reduced air conditioning requirements from lower powered desktop devices annually
  • IT services: 90 percent savings of deskside PC support; 75 percent of security/user administration; 50 percent of help desk services such as password resets, and 50 percent for software installations, which are replaced by software publishing

Standard pricing for a 1,000-user VERDE deployment is $49 per user.

With the benefits of open standards over a proprietary platform come the freedom to select software in a heterogeneous environment,” said Malcolm Yates, vice president, Canonical. “Combining Ubuntu with IBM’s Open Client software applications we can break out of Microsoft dependencies completely and significantly reduce total cost of ownership.

Here is the full Press Release: IBM and Business Partners Introduce a Linux-Based, Virtual Desktop

When I consider the combination of the efforts of the Ubuntu community, the vision of Canonical guiding development, and the backing of companies like IBM, I have no doubt that widespread adoption of Ubuntu will soon reach a tipping point.  The infrastructure is in place, and the gears are turning; we just have to reach critical mass.  Having the word Ubuntu on a resume is feeling more and more valuable by the hour.

SSH, or Secure SHell, is probably the most useful tool I’ve discovered since I switched to Ubuntu.  SSH enables you to remotely access other computers over a network, or over the Internet.  It is a secure replacement for TELNET, which although useful, transmits passwords in plain text.

OpenSSH is the FOSS implementation of SSH available in Ubuntu, which also includes SCP for secure copying across a network, and SFTP, a secure implementation of FTP (FTP also sends passwords in plain text).  In Ubuntu, you can go to Places > Connect to Server… to connect to another computer graphically through SSH to move files back and forth, but if you want to get the most out of SSH, you’ll need to use the command line.

First, you’ll need to have the ‘ssh’ package installed (this meta-package includes the openssh-client and openssh-server packages).   Open up a terminal and start by typing:

sudo aptitude install ssh

You’ll need to do the same on the computer you want to connect to.  Once SSH is installed on both systems, you can login remotely like this:

ssh remoteuser@<remote IP address>

You will be prompted for remoteuser’s password on the remote computer (the server).  You can omit the username if the username and password match on the client (local) and the server (remote) computers.  From here you can browse the filesystem, edit configuration files, or even SSH into a third computer (the server becomes the client for the new connection).  Disconnect from an SSH session by typing “exit”.

You can also use SFTP and SCP for moving files back and forth between computers.  SFTP functions exactly the same as FTP.  Just type:

sftp remoteuser@<remote IP address>

At the prompt, type a ‘?’ for options.  “put” is used for uploading files, and “get” is used for downloading them.

Using SCP is similar to using the “cp” command in a terminal.

Download files from the remote computer:

scp remoteuser@<remote IP address>:/path/to/file /local/destination/

Or, upload files to the remote computer:

scp /local/path/to/file remoteuser@<remote IP address>:/remote/destination

Or, move files from one remote computer to another remote computer:

scp userA@<remote IP A>:/path/to/file userB@<remote IP B>:/path/to/destination

Just as you can use SSH to log in to a computer on a LAN, you can also use it to connect to a computer across the Internet.  This involves three additional steps:  Using secure authentication, getting the correct IP address, and setting up Port Forwarding.

Setting up your server for SSH access from any Internet connection is quite useful.  The bad news, is that you are also making your computer fully accessible to anyone with your password and to EVERYONE with the ability to crack it.  This should concern you, because even if there is nothing valuable on your computer, an attacker can use your network as a springboard to attack other computer systems, effectively leaving your fingerprints at the crime scene. The solution is to turn off password authentication, and log in automatically with an RSA key instead.  This step is essential for anyone who will be setting up port forwarding for SSH connections.

Very strong security using RSA Key based authentication is easy to set up and it only takes a few minutes.   You will be generating a RSA key on the computer you want to SSH from (the client), and passing the key to the computer you’ll be SSHing into (the server), which essentially makes your local computer the key to access your server.  After you’ve passed your key to the server you can turn off password authentication, keeping unwanted guests out of your server.  I’ve used this excellent post from as a quick reference for a while now, and I’m going to recommend you click the link for the instructions.

To connect to a computer running on your home network, you will also need to know your (external) IP address.  The problem lies in the reality that most ISP’s change the IP address of your Internet connection regularly.  Now, if there is someone at the remote computer, you can instruct them to go to, and to instant message or email the IP address back to you, which makes things quite simple.  Obviously, this isn’t the most ideal system.  An easier way to set things up would be to use a Dynamic DNS service such as DynDNS.  This service attaches a static URL to your dynamic IP address.  The server keeps the URL up to date by listening to a device on your network which updates the server with your current IP address every minute or so.  Many home routers provide DynDNS support out of the box.  You can also set up a computer on your network to provide this service with these instructions.

The last requirement for enabling SSH connections over the Internet, is to have your home router (AKA residential gateway) forward the SSH port (port 22 by default) to the proper computer on your home network.  If you don’t already know, outsiders on the Internet see your entire network as one IP address:  The external address of your router, assigned by your ISP.  When you try to connect to this address, the router takes the incoming connection (a connection always comes in on a particular port) and forwards that port to the appropriate computer on your network.  You need to make sure this is set up to work correctly before hand.  Instructions for configuring your particular router, and further information about port forwarding can be found on the exceptionally useful website

So, now you can securely SSH into your server from elsewhere.  A problem you may experience, is that if you execute a time consuming command, such as compiling software or wget-ing an iso, and disconnect your session, the program stops immediately.  A great solution to this problem is GNU Screen (Thanks to Aaron Toponce for pointing out this great app).  Screen is a tool that starts a new, resumable command line inside the current one.  Once you are connected to the remote computer, type “screen” to start the program.  Inside screen, you can start downloading that iso with wget, and then press Ctrl+a, and then ‘d’ to disconnect the session.  You can type “exit” to disconnect from the SSH session, if you’d like.  The iso will keep downloading.  At a later point, you can SSH back in, and type “screen -r” to resume your previous session.

Well, that’s it for today.  Next time I’ll cover running GUI (graphical user interface) applications remotely with SSH and X11 forwarding, using compression, and some other useful stuff.

If you have any other useful SSH tips I haven’t mentioned here, feel free to comment.

Here’s a list of a few of the reasons I think you might want to take a look at Ubuntu.  Thanks to the Ubuntu UK Podcast episode 10 for originally inspiring this post.

  1. Cost – Ubuntu and all the software Ubuntu makes available costs $0.  If you are comparing this to the cost of Windows, don’t forget the costs of your Office Suite, any other software you need to purchase, plus the annual subscription to your Antivirus and Firewall vendor of choice.  If you want to upgrade to Vista, you’ll also need to buy a new computer.  In contrast, Canonical (the for profit company that funds much of the development of Ubuntu) will even pay the postage to mail you an Ubuntu installation CD if you ask for one.  If you are a business considering deploying Ubuntu on the Desktop or on the Server, you don’t need to work out a licensing deal before trying the system, or deploying it fully.  Paid support is available, but not required.
  2. Wide Range of Support Options – You get your pick.  The easiest way to get a question answered is by doing a quick Google search (I use Uboontu).  Alternatively, you can read up on the Official Ubuntu Documentation, post to the Ubuntu Forums, ask a question on Launchpad, chat in #ubuntu on, send an email to an Ubuntu Support Mailing List, contact someone in your local Ubuntu LoCo Group, or get paid support directly from Canonical.
  3. Live CDs – You can use a Live CD to test drive Ubuntu on your computer before actually going through the installation process.  I’d recommend running the Live CD to make sure all your hardware works, including things like printers and other peripheral devices.  NB:  The performance of your system while you use a Live CD is dependent on the amount of RAM your computer has – I’d recommend 512 MB RAM for a good experience.  A fully installed system will certainly have better performance.
  4. Ease of Installation – Ubuntu is quite easy to install, particularly compared to Windows.  There are no tricky questions, and all the user interaction occurs at the beginning of the installation, so once it gets going you can walk away.  If you are currently using Windows, I’d highly recommend using Wubi to install the system.  Wubi makes installing Ubuntu ridiculously easy.  Ubuntu is installed just like any other Windows application, and can be removed from Add/Remove Programs in the Control Panel.  The entire system is installed inside a single file, with no impact on the rest of your Windows installation.  An entry is added to the Windows boot loader, giving you the option of starting either Windows, or Ubuntu each time you start your PC.  Wubi also comes on the Ubuntu Live CD, so if you insert the CD while running Windows, it will give you the option of installing Ubuntu with Wubi without requiring the additional download of the Ubuntu installation files.
  5. Less Post-Installation Work – Ubuntu comes with software for everything you need to do on a typical desktop system, pre-loaded.  After a Windows installation is finished, you need to find and install drivers for every piece of hardware in your computer.  Afterward, you get to install all the different software applications you need, one at a time, meticulously typing in all the CD Keys, or hunting for the installation file on the internet.  If you’ve done this before, you can probably appreciate the Out of the Box completeness of an Ubuntu installation.
  6. A New Version Every 6 Months, or 2 Years – Ubuntu has a 6 month release cycle, bringing you a new version of Ubuntu, along with new features and new versions of each piece of software you have installed.  If you’d prefer not to upgrade every 6 months, there is also a Long Term Support release, every two years.  The LTS release has a longer support lifetime (3 years, compared to 18 months for Desktop support), if you are purchasing support from Canonical.
  7. Easy to Install Additional Software – Need something that didn’t come with a default installation of Ubuntu?  Just go to Applications > Add/Remove, and after the list populates itself, you can browse through thousands of available applications, grouped by category.  These include games, desktop publishing applications, alternate office suites, audio/video remastering software, and just about every other type of software you can think of.  Installation is as easy as checking the boxes next to your chosen applications, clicking Apply Changes, and clicking Apply again on the confirmation box.  That’s it.  All the software is automatically downloaded and installed, with icons placed in the appropriate places in your menu.  No more clicking next, next, next, next, finish, ad nauseum, and no need to keep those precious software installation CD’s you bought from getting damaged while you aren’t needing them.
  8. Better Language Support – Gnome, and therefore Ubuntu, has 45 languages having at least 80 percent of the system translated with some support for over 100 languages, including Albanian, Arabic, Basque, Bengali (India), Brazilian Portuguese, Bulgarian, Catalan, Chinese (China), Chinese (Hong Kong), Chinese (Taiwan), Czech, Danish, Dutch, Dzongkha, English (US, British, Canadian), Estonian, Finnish, French, Galician, German, Greek, Gujarati, Hebrew, Hungarian, Italian, Japanese, Korean, Lithuanian, Macedonian, Malayalam, Marathi, Norwegian Bokmål, Polish, Portuguese, Punjabi, Russian, Serbian (Cyrillic and Latin), Slovenian, Spanish, Swedish, Tamil, Thai, Turkish, Ukrainian, and Vietnamese.
  9. No More Worrying About Viruses – Ubuntu users don’t need to worry about viruses, as viruses are programs which exploit holes in Windows security.  This means that you also don’t need any Anti-Virus software, which saves you money and system resources.  This extends to spyware and adware, and other malicious programs lurking about on the Internet.
  10. More Secure – Linux, and therefore Ubuntu, is more secure than Windows, particularly on the desktop.  Windows comes with all kinds of ports open waiting for connections, and Ubuntu does not.  This is why you are foolish not to run a firewall on a Windows desktop computer, as the firewall is intended to fix the open ports problem.  On Ubuntu, installing a software package which requires a port, opens that port.  If your Ubuntu system is directly connected to the Internet, I’d recommend you set up some kind of firewall anyway.  In Ubuntu 8.10, check out the new graphical front end to ufw (Uncomplicated Firewall), gufw.  Also, the filesystem used by Linux is more secure, and more tunable to exactly what kind of security you need for a given file or folder, in contrast to the ON or OFF file access provided by Windows XP.
  11. No Vendor Lock In – Proprietary software vendors often take advantage of their customers, by locking them into the system they purchase, by making it hard or impossible to migrate to a different system.  Apparently, they think that doing this will keep their customers coming back, year after year.  They’re usually correct, no matter how unethical it is.  I, for one, will not buy anything that traps me into using a particular product, given the choice.  Ubuntu, and FOSS (Free Open Source Software) in general, support open standards, and are providing your software at no cost.
  12. Designed to Last Forever – Free Software is often developed by people who wanted something for themselves, and after creating it, chose to give it away to everyone else.  So, the software is designed to serve the user.  It isn’t designed with Marketing in mind, nor is it designed to become obsolete so you need to buy the new version.  Not to mention, the software is open source, so even if the guy that originally wrote it gets hit by a bus or something, anyone else can continue to improve the product, if they want to.
  13. Learn How it Works – If you like to tinker, and want to learn, the sky is the limit.  There is excellent documentation available in the Help menus of most of the software that comes with the system.  If you want to learn how to use free software for the production of art, video, or sound, there is free educational material available, and the tools are free.  If you want to get more technical, you can go as far as viewing the source code for even the most arcane parts of the Linux Kernel.  And again, all the tools are free.
  14. Change the Appearance – It’s really easy to dramatically change the look and feel of Ubuntu.  Don’t like brown?  Go to System > Preferences > Appearance for a number of different themes.  Check out or for a wealth of additional themes and icon sets. If you are using Ubuntu for your business, you can even rebrand the Operating System with your own logos and themes, if you want to.  Of course, anyone can do this on their Desktop at home, too.
  15. Change the Software – You can take any Free Software and modify the code to make it suit your needs perfectly.  If you redistribute it, or if you are just feeling charitable, make the code changes available to everyone else.
  16. Help Make Ubuntu Better – It isn’t hard to join the community and work to make Ubuntu better for yourself, and for everyone else that uses the system.  You can help by submitting bugs, suggesting ideas, translating documentation into another language, testing the system, supporting others with problems, contributing artwork, writing documentation, or contributing code.
  17. Real Ownership – With Ubuntu, you actually have ownership of your entire computer.  If you are using Windows, you don’t own the software – you only paid for a license to use the software in a specific way.  Ownership means you can change it, and do whatever you want with it including having redistribution rights and including the ability to making money off of it.  Your ownership is unrestricted, and you don’t need to worry about someone trying to sue you for what you do with it (the only exception would be relating to the use of trademarks, such as the Ubuntu and Firefox logos, if you change the software).  Of course, real ownership also means that if it breaks, it’s up to you to fix it.  But you aren’t alone.  The entire community owns it jointly, and many people are helping to provide you with support, fix the problems on your system, and make improvements to your software.
  18. Pwn your Friends – Ubuntu has a number of great, free First Person Shooters available in the repositories including Tremulous, Nexuiz, OpenArena, and Sauerbraten.  Other cool games are available, like Kobo Deluxe or Battle for Wesnoth.  Running Windows games in Wine is also an option.  See the Wine App db for how well your favorite Windows game runs in Wine.  For example World of Warcraft, Guild Wars, Homeworld, Warcraft III, Starcraft, EVE Online, Command and Conquer 3, Call of Duty 4, Everquest 1 and 2, and Counter-Strike all run very well in Ubuntu with Wine.
  19. The Power of UNIX, thanks to Gnu’s tools – If you really want to make your system work for you, you’ll be learning how to make good use of the command line.  The Terminal is scary at first, but that’s only because it’s unfamiliar and you don’t know how to use it.  Once you have some command line experience under your belt, you’ll find that you can do what you want to do much faster than you could using your mouse in the graphical environment.  (If you find yourself using the Terminal a lot, I’d recommend checking out tilda.  You can install tilda from the command line with ‘sudo aptitude install tilda’.)  A few tips for beginners:
  • ~ represents your home directory, where all your files live.
  • cd changes directories, cd .. takes you up a level, and cd – takes you back to the previous directory.
  • ls displays the contents of a directory.
  • Autocomplete commands by pressing tab, or pressing it twice for suggestions.
  • After finding the name of a command, type “man COMMAND” for the manual.
  • Use the nano command to edit a text file.

Here are some challenges associated with switching to Ubuntu:

  1. Unfamiliarity – It might sound like I’m stating the obvious, but the system will be new to you.  Using Ubuntu may appear to be more difficult than it really is, just because of this fact.  After you get over the initial shock, I think you’ll find that Ubuntu is actually easier to use than Windows.
  2. Terminology – When you are new to the FOSS world, it’s really hard to know what everyone is talking about, since you don’t understand the terminology.  How are you supposed to know the difference between a desktop environment and a window manager?  Not to mention, the names of different projects that are interchangeable, like Gnome, KDE, and XFCE or Metacity and Compiz.  Every software project has come up with it’s own name, and the name never seems to have anything to do with what the software actually does.  The good news, is that the Ubuntu Community has provided a Glossary.
  3. Vendor Support – Many hardware and software vendors don’t provide much support for Linux.  The good news is that the Linux Kernel hackers have managed to backwards engineer hardware drivers for just about everything.  3d Graphics card drivers, and some Wifi cards require the use of an Ubuntu tool called Jockey which will install proprietary drivers for you.  Software that isn’t designed to work on Linux might run if you try using Wine, and there are Free Software alternatives for just about every type of computer program.  Some of the most popular Windows applications actually run great, and possibly faster in Ubuntu using Wine, such as MS Office and World of Warcraft.  If you really need Windows XP, you can easily install it inside Ubuntu with Virtualbox.  Also, if you call your ISP and tell them you are running Ubuntu, they will probably freak out for no good reason.  At least, they’ve heard of Firefox, by now.
  4. Some Hardware Might Not Work Out of the Box – Hardware that doesn’t work is uncommon, but it’s possible.  Less popular hardware is less likely to work.  Try the LiveCD, and test your hardware.  Some people have problems getting Suspend and Hibernate to work.  If it doesn’t work, check the forums or do a Uboontu search for help in getting it working.  In the future, it’s a good idea to check the forums to see if a piece of hardware is supported, before you buy it.  I haven’t found this to be a big problem when I’ve helped people switch to Ubuntu.
  5. Migrating your stuff from Windows to Ubuntu – The Ubuntu Community has compiled a good list of stuff to consider when you are going to make the switch, available here.  I’d again recommend using Wubi, as you can take your time migrating everything as Wubi installs Ubuntu on your computer with no more impact on Windows than installing any other application.
  6. Restricted Media Formats – Many media formats, such as mp3 and aac music formats don’t come pre-installed in Ubuntu, due to legal restrictions on distributing the software required because of patent issues.  I’d recommend you start ripping your CD’s into Ogg Vorbis format.  It’s better, and it’s free.  DVD support doesn’t come pre-installed, also for legal restrictions on decrypting DVD’s without paying for it.  Flash video, required for YouTube and other websites, doesn’t come pre-loaded either, because of restrictions imposed by Adobe.  Also, Microsoft’s fonts don’t come installed, also due to legal restrictions, irregardless of whether or not you own a copy of Windows.  Ubuntu costs nothing, after all, and the people that hold patents require compensation for using their technology.  If you want to make all of this work in one shot, no questions asked, you can install the ubuntu-restricted-extras package.  For more on the topic, see the Ubuntu Community documentation available here.  If you want to buy software that allows Ubuntu to play these formats, Canonical has started making this available in the Canonical Store.

Let me know if I missed anything important.  NB:  Many of the advantages of using Ubuntu listed above are shared by other Linux Distributions, and are the result of the hard work of Gnu and a lot of other Free Software projects.