Wednesday, April 4, 2007

Micro$oft vs. Anything Else

You know, I have nothing personal against Bill. As a matter of fact I kind of admire his geek made good story. The software made by his company however is another story.

As a consultant I guess I should like Micro$oft, because any given IT task I have to do, usually takes twice as long (and usually the purchase of additional expensive software) to accomplish as it does under any other operating system. Pick one, Solaris, Mac OS, Any Linux Flavor, HP-UX, AIX, Dec-Ultrix, QNX, to name a few.

What the advent of Windows in the Server world has done is to breed a generation of MCSE's that can regurgitate the requisite points and clicks need to configure a Windows operating system, but they do not understand the underlying concepts of what their network and hardware is trying to do so they build bloated applications and flooded networks. To be fair there are MCSE's out there that know their stuff, but the majority I've run into know about Windows, but ask them an architecture question and they'll start pulling answers out of their arse.

Let's talk about Vista for a moment. They did this to us with Windows 95, Windows 98, Windows XP and up the line. Each successive operating system has been more bloated than the next. Each upgrade causing the customer to have to buy bigger faster hardware just to equal the performance of their old operating system/hardware combination. In addition to that, the new operating system is 64 bit, but most of the applications and drivers are still 32 bit. Which means you'll have to run those suckers under a 32 bit emulator which will give you yet another performance hit. I just don't get it. Let's see, I'm going to cause myself days of un-told pain and suffering so I can upgrade to something that runs slower and is less stable than what I currently have? Ya right..

The architecture, hmmm... Well I can sum that up with two words, "Protected Memory". All of the other operating systems I mentioned above, Unix and Unix work alikes have something called protected memory. The operating system itself, i.e. the video drivers, disk drivers, passwords, logins, etc are all stored in what's called protected memory. Your applications, like your spreadsheets, web browsers and e-mail programs all run in what's called "User Memory". This is also sometimes referred to as kernel space and user space. The concept here is that while your applications run merrily away, they can only access the core of your system or "Protected Memory" through very well defined API's (Application Programming Interfaces).

In the Windows world everything runs in the same space. In other words, once you're in you're in. This is what makes Windows more prone to virus' than other operating systems that utilize the concept of "Protected Memory". On Windows, Any program you install can access parts of the operating system that it's usually not a good idea for programs to access. Things you run on your user desktop can re-install drivers, write directly to the hard disk and update your system registry where all your important system configuration information is stored. Once you're in to a Windows system it's a fairly simple matter to infect it with something nasty.

In the "Protected Memory" world, once someone gets in, they are in to that application, i.e. a mail server or a web server. The difference here is that just because they have broken in to one application still doesn't mean they can get at your system. Once someone is in to your system they then have to try to break in to protected memory which in a lot of cases just can't be done. "Protected Memory" not only helps protect machines from getting completely compromised by hackers, it also keeps poorly written applications from crashing or locking up your machine.

Let's talk about that time thing. I said up above that it takes twice as long to get things done, and here's why. First, point and click, point and click. A half hour later you've navigated to the places you needed to go to updated your configurations the way you wanted them. In a *nix system there are certainly graphical config programs if pointing and clicking is your thing, but on the back end instead of a cryptic "Registry" where everything is stored in multiple levels in text and hex, there's a directory, with text files (usually /etc) where all your application configuratino is stored. There's usually only one or two files per application and everything is in there, usually with comments telling you what each configuration parameter is for. It makes configuration of systems and applications, nice, simple and less prone to failure.

I've always found, in the IT business, that it is always best to have options. If you have a hammer in your tool box, you can only drive nails. If you have a hammer and a screwdriver in your tool box you can drive screws and nails. The point being is the more tools you have the more problems you can solve. Next time you are out looking for a new server or a new set of desktops think about a Unix or Linux solution. If you have the basic needs of most business', i.e. E-mail, Web, Database, Word Processing, Graphics, then a good Unix or Linux distro may be the ticket. It will cost you less up front, has commercially available support, won't get virus' and will keep people from installing alot of extra chat programs and the like on your nice new desktops or servers.

My current favorites are Ubuntu Desktop and Ubuntu Server, although I've only had the server running about a week, setup was text based, which is OK, but it took a bit, being new to the system, to get it how I wanted it configured. It was, however, very easy to get a postfix mail server with spam assassin and a Courier IMAP with SSL running. I've still got to get my Apache and mySQL set up the way I want them. I'll let you know more about how I like it after I've had it running for a bit.

For Video games, well it's just Windows. The same thing that makes Windows suck at being a desktop, is what makes it great for playing a video game. In an operating system there is something called a scheduler that divides up the single or multiple CPU's to work on any given process at any given time. In Windows the scheduler tends to like to dedicate all of your CPU power to just one process at a time for long periods of time. This is why sometimes when you run Windows and start a big print job, all the other applications either lock up or run very slowly. In *nix, the schedulers tend to divide the CPU time up a bit more evenly (although you can adjust certain process to hog all the CPU if you like, it's generally called a "nice" value). In Windows, if you start a heavy duty game, it will dedicate all of your CPU power to a single game process (although multiple CPU's and multiple core CPU's tend to be a bit under-utilized in Windows as compared to most *nix systems).

I could go on about this for days, and I think I will, but for now, I've got to get back to the consulting biz..

Safe Travels,

No comments: