Friday, February 27, 2009

My life as a Microsoft Apologist

I am a computer uber-geek...hence I am not cool enough to chill with you geek chic nerds in the blogosphere. But thats ok. Anyways since I have (for better for worse) committed my professional career to software development (both MS and otherwise), I have to rant and rave like all other uber-geeks to flash my nerd badge every once in a while. This post is a defense of (parts of) Vista vs Apple.

Some background on me: I am a software developer for banking mission critical systems... it sounds much more exciting (or dorky) than it actually is. None the less, our product moved 1 trillion dollars in the last three months (brushes shoulders off arrogantly). I used to *only* drink the Microsoft cool aide, but for the last three years have done exclusively Java/OpenSource development, but still on Windows servers (all of our customers use windows servers for the most part...and mainframes). So I am lucky to have the opportunity to both get the microsoft side of the fence, and the rest of the java/linux world. I think it has made me much more versatile.

So here are Victor's argument points against Vista:

>> vista, like any other operating system that microsoft releases, is incomplete until at least the first service pack...that is shameless

I am not really disagreeing with this point, but just want to point out that this is a dramatic oversimplification of a complex problem. Yes, Windows is a piece of software, and being software- it has bugs (so does apple). Many of the 'bugs' (especially in the case of Vista) has to do with ill-written drivers that aren't even written by MS. MS felt it necessary to re-write much of the 1980's kernel and re-organize the binaries to position it for future growth and innovation. They had to pay this cost at some point, but they probably underestimated the consumer goodwill cost from poor motivation of 3rd party driver manufacturers. MS is hedging its bet that its investment in technology now will position them for quicker time to market for future technologies, because their kernel code base will be poised for change. Linux (ergo Apple) is a messier monolithic kernel which has only grown in complexity for the last decade and a half--only time will tell if the cost was worth it-- maybe Linux won't hit a complexity wall (where cost > benefit)-- maybe they will.

As far as "shameless", I assume you are referring to MS charging for its O/S. Apple does this too, and pound for pound I would argue that Apple is much more shameless in their pricing structure. They charge for their iPhone SDK... THAT is SHAMELESS. However, if you are arguing for commercial vs. open-source, then this is again a different subject--- very complex-- often over-simplified.

>> it's fairly unstable, and has a huge amount of overhead, most of which is totally worthless.

I will need examples of 'fairly unstable'. I use Vista exclusively at home and work since the first release. The only stability issues I have had were with my nVidia geforce drivers for 64-bit when Vista first came out. This is a legitimate gripe-- the driver support was poor (see above). However, today-- I question the notion of 'fairly unstable'. I run it 24x7 on half a dozen machines with zero issues...

If I can't convince you with my personal anecdotes, then let's talk technical details. This also addresses the 'worthless overhead'. Again, you are going to have to give me examples of that. I can say this for some of the enhancments in vista that improve stability and performance. The kernel has many improvements: SuperFetch, ReadyBoot, and ReadyBoost to name three which are fairly popular. Also, the executive's memory manager implements are more complex 'victim selection' algorithm for finding pages under memory pressure. In general the memory manager is state of the art. No other commercially viable kernel has the technologies that Vista has (prioritized free page lists, learning/heuristic based pre-fetch). In the IO manager executive component, IRPs (I/O request packets) are now processed in a prioritized fashion. This is what makes the above work well. This also allows, for example, for virus scanners to run at a lower priority, so that your disk serves your important requests before grabbing files for the virus scanner to scan. Also, there are now mechanisms to push some kernel drivers to run in user mode processes. Obviously, this is not applicable to all, but things like webcams, etc. can now run (and crash as their shitty drivers are apt to do---Im looking at you logitech) without killing the kernel. Linux, Apple, etc. does not have this technology-- their kernels will just trap and crash. There is a legitimate argument to be made for some of the overhead introduced in the network stack. Their excuse was they expected IPv6 to be much more popular than it turned out to be. They were wrong. Windows 7 brings even better innovations-- they have made some hot kernel locks (in the dispatcher and memory manager) much more granular, which will increase performance (better utilization since less spin locking)....again NOT in linux/apple.

>>the only thing i will say about microsoft is that they have one hell of a marketing department. apple should pay attention.

This must be a joke, right? Apple has the best marketing department in the WORLD! Otherwise they couldn't charge you $3000 for a $1200 laptop with an open source kernel and their (very pretty) shell. Microsofts marketing department should all be fired. The irony is that Apple attacks MS for spending money on marketing instead of fixing Vista's problems. MS needs to spend MORE on marketing-- that includes marketing to the 3rd party driver writers to increase the quality. They also need to free up the pathway to get DDKs and windows driver certification. If it were easier to certify and write drivers there would be fewer problems and the publics perception of MS writing bad software would dramatically improve. Seriously though- did you see the Seinfeld MS ads-- absolutely awful. But I enjoy every one of the Mac vs. PC ads (even though I hate them for it).

The fact of the matter is that Microsoft innovates lots of technology, and is absolutely responsible for motivating markets, etc. The fact that Windows dominates is a strong indicator of its success. Microsoft created the business of writing software--- they created a way to market to developers. They created APIs and SDKs that were usable to create GUIs easily. In the early 90's Mac lost the battle because the software was being written for the Microsoft platform. There are still parts of the Win16 API alive (albeit updated) in the current Win32 API in Vista. All of this pervasiveness comes at a price. Apple still creates a very large chunk of their software in house... and how many cocoa/obj C programmers do you know??? But you go googling for Win32/C++ programmers and you are going to find thousands. This is no accident, and its a shame that all of the influential and positive things that microsoft has been a strong factor in get lost because of public misconception and some RIDICULOUS farce (richard stallman) of the Free software foundation that believes everyone that uses a computer should be a programmer.

Sorry for the rant--- although I can't believe anyone would actually take the time to read all this crap... so I'm probably talking to crickets at this point :-) Also- (I should've mentioned this at the beginning)...while I hate Apple for poor, childish reasons (seriously it all started as an argument between me and a kid in 3rd grade), I will still recognize that the Apple of the last five years has been a powerful, positive force in technology. They certainly forced MS to better their ways and focus much more on the user experience. Competition is good-- educated competition and debate is even better.

Much Love,
Steve

8 comments:

Lightning Baltimore said...

I read the whole thing.

:-)

Then again, I'm a software engineer, programmer/analyst, whatever.

I hate those Mac vs. PC commercials. What I get out of the vast majority of them is:

Macs can help you make frivolous, useless crap but PCs are for boring, adult stuff.

I guess that's perfect for a world where intelligence is uncool.

Planetx_123 said...

Here here- I completely agree. I wonder if this 'intelligence uncool' mentality is a western thing, an american thing, or a world thing. America in particular seems to be getting worse on the education front. There is no motivation to pursue educational goals when everything around you (parents, peers, music, sports, etc.) is showing you otherwise. I know I sound like a crotchety old man right now (im about 40 years too young for that), but you really hit on nerve that pisses me off. We are so concerned with college basketball, rap music, etc that poor science or fine arts get left to the margin. If all of the money + energy that was spent on college sports was redirected to education and research, we would be so much better culturally, etc. it would be crazy. Im not arguing against entertainment, or trying to claim that all entertainment must have some value to society, but if it doesn't then it should receive that proportion of emphasis culturally and economically.

This post is just FULL of rants... I need to DO HOMEWORK and stop using this blog as an excuse to not study right now!

Thanks again for reading all of it- I don't know how you made it through- I almost bailed just proofreading :-)

Much Love,
Steve

Anonymous said...

ok dude. i didn't intend to start a flame war. let me explain a few points here, in a non flamish fashion. first off, i'm not a computer programmer. i'm not a machead. i'm not a linux freak. i'm not a 14 year old scriptkiddie (no offense to 14 year old scriptkiddies),i'm a sysadmin. i'm one of the few that are crossplatform, and i realize that certain operating systems and hardware have certain specific applications. i am not necessarily making a wholesale condemnation of vista, or windows, as microsoft now so eloquently refers to it since the bad publicity since it's release, nor of microsoft or any or it's ilk. i'm also not saying that any operating system is inherently better than any other. what i am saying is that since microsoft writes for such a hideously wide range of peripherals, their work is oftimes sloppy and put together too quickly and poorly inspected, therefore resulting in debacles similar to the famous win 98 crash on national tv. or the vista debacle. were microsoft not so proprietary with their code, maybe more people would write updated drivers for peripherals. but when you have to guess what you're interfacing with, it's a crap shoot.

and yes, osx crashes, and rather spectacularly too, as does linux, and all the others. i'm not saying that. i will say though that there are not too many mac clones out there, and this is one of the reasons that their os is servicable. they know what peripherals they are making drivers for, and can do this very efficiently. same with sun microsystems. not too many sun clones either, for the same reason.

as far as stability goes, i have novell servers and sun boxes that have been up for several years with no intervention. i've never been hacked on any of these, never lost data, never contracted a virus, never done an update. i don't run windows servers for thise very reasons. don't trust them. i worked at too many places that did, and they were always having some dispute with them. unfortunately my automation system runs on windows. 2000 to be exact. it's probably more stable than any of the other windows machines i've dealt with, but it still has issues, and still does random stuff and still requires being restarted on a regular basis. this is not good in a production environment.

addressing a few other points here, having to do with microsoft rewriting binaries and such. i should point out the instance in which microsoft decided to rewrite java, which btw belongs to sun microsystems, and make their own version that was not compliant with sun's java. who knows how many programs were written in microsoft java, and when sun sued them (and won, which was a shock) microsoft dropped any and all references to java, and all the programs that were written in ms java stopped working. and didn't work with sun java.

the latest version of office is another good example. the microsoft has decided to make word documents in xml. no problem there, except it's nonstandard xml, and will only open with the latest version of office. this is typical of their methods of forcing upgrades. and this is not the only instance of this. microsoft works was not compatible with office, which is ridiculous. same type of program, same software company, but not compliant.

i am aware that apple charges for their os. so does any other vendor that offers technical support. i have no problem with that. good technical support is worth it's weight in tunafish. my point is that apple's latest os is fully 1/3 the price of microsoft's, and i can tell you that microsoft tech support is certainly not worth the difference. however, i am not a proponent of downloading whatever flavour of linuz is the latest fad, and trying to get it to go with no support. i haven't the time to deal with that. nor do i have the time or inclination to wade through and tweek the kernel so it runs better.

i have to take exception to your statements on microsoft donimating being a measure of its success and creating the business of writing software.

let me go back to the cp/m days. every hardware manufacturer had its own version of cp/m, none of which were compatible with any other. and their own proprietary programs to run on their own proprietary cp/m. if you changed computers, you started from scratch. some time in there, ibm developed their disk operating system, which was cross platform. microsoft, which was a fledgling company at that time, reverse engineered ibm dos and came out with their own version, which was readily available on uncopyprotected floppy disks. a bit of creative marketing, a few "enhancements" like the oh so famous dosshell, and they took over that market. admittedly, ibm did not help matters any by remaining the stodgy company that it alwasy had been. windows was the same way. in fact, microsoft used ibm's strategy of fear, uncertainty and deceit against them, and basically overtook the pc market. their major competitor? os/2 warp, which was an incomplete os. microsoft strategy was to provide their software in such a fashion that it could be easily pirated, and thus, dominate the industry. at such a point that they had achieved that dominance, they suddenly forced registration, which meant that you now had to pay for something that everyone was using, and was free, but now was not. whether that was marketing or from higher up, it worked, and thus the dominance of microsoft in the pc world.

the overhead i'm referring to is all the cute shit that annoys the hell out of sysadmins, the little dog that goes in office, or the paperclip, the necessity to display desktop icons in true colour, all the wacky transitions between pages so it "looks" cool, all the crap that we tend to immediately turn off when we get a new computer.

so if you're still with me, mr cricket, you may be wondering what the point of all this is. to be honest, i'm not sure. there are basically two major factions in the computer world. windows guys and mac guys. neither can see past the end of their mouse. both hate the other platform passionately. both are rabid about their own. neither want to hear things from a semi objective point. which faction do i belong to? neither. what operating systems do i run? the workstations are all windows. on air automation is win 2000. the file servers are all novell. the web servers are a combination of sun boxes running solaris 9 and bsd boxes. video editors are vista machines, partially because of the horsepower, partially because of the avid software, with the exceptioin of one imac, which is osx with final cut. audio editors are all macintosh with protools hardware. is having such a kludge of machinery a nightmare? no. the only machines i have issues with on a regular basis are the workstattions, which are not entirely the os fault, and the automation, which is.

hopefully i clarified some of this. i did not want to take over jake's blog either, and since i don't have one of my own, i borrowed yours to reply. hope you don't mind. we can continue this in email if you wish.

Planetx_123 said...

No I absolutely don't mind...although I think we don't really have much more to talk about.

So from a technology standpoint I think we both agree that the source of many problems is drivers, and microsoft's pervasiveness and inability to predict hardware configurations (result of the former). As I stated in my first retort- I really think they should make certifying (WHQL) free to encourage better drivers. This will certainly cost them more money, but will improve the consumer experience drastically and sustain their seat of dominance. I agree that Mac doesn't have these problems, because they get to control most of the peripherals and write most of the drivers in house. Microsoft unfortunately cannot do this, and I would argue that innovation is bettered by having a more open model (as MS did) to encourage new peripherals (argument against Apples former closed stance to hardware).

As far as viruses, etc. Mac touts themselves as having 'no viruses' and you mention that you don't have to worry about it on your solaris machines. The first thing to discuss is virus vectors-- how do viruses get into machines? For infiltration that wasn't initiated by a user accidentally, this is almost exclusively buffer overruns via some port opened for some service. In windows, the RPC service has been a heavy target; any popular service that must keep a port open has been a target. You probably already know this, but if you don't: a buffer overrun occurs when performing some kind of buffer copy (typically null-terminated strings with strcmp or similar) on to the stack (typically not the heap nowadays due to newer page/segment protection technology). Normally, the c library strcmp copies all of the bytes until it hits the string termination char (0x00). Unfortunately, in the c library it is not possible for the function to know how big the buffer is, and thus if a string is passed that is larger than the buffer, then the memory after the buffer is overwritten and corrupted. If you are a careful hacker, you can create a string that is just so aligned that it overwrites memory so that the 'return' location in the stack frame points to somewhere else--the evil code. Its beautifully simple-- and in all buffer overrun scenarios the principle is the same. There are now 'secure' functions that we are supposed to use that perform a length check, but there are 20 years of software without. So every O/S typically has services that must open ports/sockets on the host, and almost all server code (especially back then) is written using C and the stdio library. Thus, all of these services did not have automatic buffer checking, and at the time, people weren't worried about buffer overruns being a vector for infiltration. It just so happens that because Windows became so pervasive in many semi-secure situations, it became an easier target.

Now all of the above is not to say there are not legitimate gribes about quality that MS should've addressed before shipping. But programmers are people too- and funny thing about people is...they always screw up when given the opportunity. I'm not trying to say that MS shouldn't be blasted for allowing vulnerabilities to go out--Im just saying that in perspective with the reality of the way software is written-- they probably didn't do anything that any other software company wouldn't have done in a similar situation. This just means that the argument is not about microsoft vs sun...but an argument about the nature of software development and the economics of capitalism and some peoples desire for chaos (hackers). I'm ok with agreeing that hackers suck, because people suck, and programmers making mistakes, but implying that MS is somehow much much worse is a little unfair-- they were writing code using the same standard c libraries as everyone else... its just that its easier to attack windows servers when there are thousands of them all sitting on public IPs.

Lastly- there are legitimate arguments to be make about the 'defaults' that MS delivered for non-expert consumers... but again its a little unfair to compare this to Sun or any other vendor NOT trying to sell to non-expert users.

With regards to standardization and MS's cavalier attitude towards trying to impose their will-- I agree with you. This was not in my original post, because it doesn't pertain to vista directly, but of their ancillary products. My only half-apology is again, you have to look at their decisions in the context of the environment which they were made. I think HTML/CSS is a good example of where MS had the opportunity to really lead the industry and they failed.

As far as 'the cute shit' goes-- Vista is not and never intended to be a server operating system. You can go to Server 2008 console-only if you want the epitome of 'no cute shit' (although there are lots of problems I have with 2k8 console...so Im crossing my fingers that you haven't actually used 2k8 console :-) The cute shit is there for a reason. Most, not all, improves the usability of the system. Yes there have been failures (clippy, which isn't there anymore so please dont use clippy as an argument point, they all apologize). But there are plenty of usability improvements that make it cognitively easier to accomplish your tasks. The ribbon in office 2k7 is great from every metric they have measured. Search is always great. Of course like all things in computing they take time and resources from the CPU. This is why kernel improvements like prioritized IRP processing was created-- so the search indexer could run in the background and not affect user needs as much.

So my apology for microsoft is really more of just a call to fairness. Its easy to blast them because they are so prominent. The argument boils down to- did Microsoft make decisions that made the situation worse then it naturally would've been:

For viruses at least- I think no-- I think given the ways to write software of that time period from all vendors- that virus outbreaks were inevitable. Certainly, Microsoft could've done things to suppress the outcome more than they did... but alas people were running the company, and people were making decisions, and people were writing the software. It is unfair to expect so much of people when all of history has shown otherwise.

For standard development and marketing- yes they could've done more... does it deserve the place of hatred that MS has received... I think not, but I can understand why others do. Note also- that this happens all the time in every industry-- there are standards that are created and not followed due to market/economic forces. However, MS is uniquely blasted on this much more than any others. For example, in the banking world the Federal Reserve Bank is the absolute largest offender of not following technical standards (their own too). It sucks, but its reality. Certainly had some super-man had the foresight and intelligence to recognize the ramifications comprehensively 5 years ago, and mitigated them-- then everything would've been better. But where are these genius super-heroes that always make the 'best' decisions without all knowledge past and future??? They are rare, and they are not holding executive positions at Microsoft (google might just have a few though!).

I think we agree more than we disagree, but I just think the hate that they have received from the world is undeserved. Thats my best apology, I suppose.

Much Love,
Steve

Anonymous said...

i see your points and understand them completely. as i said earlier, i am not a programmer. i deal with systems and end users. it's a whole different perspective. i'm not about to seriously throw rocks at microsoft, or anyone else, because i certainly could not do a better job of it. i am just relaying what end users have experienced, and although a lot of them complain about windows, let's face it, it's a windows world.

i'm not using vista in a server environment, but i am running avid media composer on 3 top of the line hp workstations. the avid recommends a whole list of crap to make sure is turned off, because it will choke the editors down.

i also agree on the virus issue. if macs or linux boxes were as prevalent as windows machines, they would have problems with virii also. all of my machines are behind routers and firewalls, not that this will necessarily help if someone is inclined to hack, but again, i think the number of people interested in hacking into a solaris server is probably pretty small.

overall, i'm seeing both sides, and i'm trying to be fair. however, i can pretty much say that my next workstation will be a macintosh, if for nothing else than for video editing and audio recording.

thanks for the conversation, btw. i enjoyed it immensely.

Planetx_123 said...

me too :-)

Rob said...

You write to smart for my small mind, as are the comments. I'm just going to say, if Macs looked like a standard Dell lol.. I wouldnt pay that much. Macs are just soooooooooooooooooooooooooooooooooooooooooooooooooo pretty.

Planetx_123 said...

I agree-- I would have sex with a mac book pro if I owned one...it would be disgusting (and really hot)!

Steve