Giving Up on Microsoft

My agreement with your thang comes with a few suggestions:

(i) Use VMware (not Virtual PC) on Windows and install a Linux desktop VM and start to SLOWLY migrate as much as you can to the Eclipse world of PHP, SQLite and MySQL (XAMPP). This move is laughable to many hardcore Microsoft developers.

(ii) Move your MSDN development environment to another (Windows) VM and leave your Windows host OS clean. Now you can see the Windows world on your host machine like people who are not developers do. Sounds simple but this is very important.

(iii) Stop using “controls”—especially ASP.NET controls. My new ASP.NET designs prioritize ASHX files over ASPX files. My move was to use XSLT as much as I can. Again, this is utterly crazy to most .NET heads—Juval Lowy literally hates XML.

(iv) Use YUI for AJAX and not MSDN AJAX solutions. This makes your Web clients server-neutral. You can spend hours and hours designing a UI for the web—do not lock it in to a Microsoft server!

More related stuff:

"Random Screen Shots: The New Songhay System ASP.NET Design Pattern"
http://www.kintespace.com/rasxlog/?p=536

Your list isn’t really fair… You are using cutting edge technology before it is mainstream. Wait a few months for Orcas and your list will cut in half to

* Windows Vista
* Visual Studio 2007 (Orcas?)
* Visual Studio 2007 Team Explorer (if not included w/ Orcas)
* SQL Server Express SP2
* Expression Blend (unless this is in Orcas too)

You make a valid point that I fully support. The two camps have a lot to learn from each other, brother. And if, as professionals, we’re to select the best tool for the job then we should put on our level-heads and make the appropriate choices.

I actually went the other way to Mike Gunderloy. From open-source tools to Microsoft. I did this not because I wanted to but a family move necessitated it. I had no fear of the transition because, like you, I started on Microsoft BASIC and VB. I wouldn’t say it was like coming home though. Far from it. But there are some things that Microsoft does fantastically well. It’s clear that a lot of thought and testing goes into the products they create. And most importantly how those things might integrate/inter-operate. Hats off to them for that because sometimes it feels like open-source has a much harder task of this. Being a very much more disparate and disconnected development organism than Microsoft.

The thing that I can’t get my head around about Microsoft is the almost dizzying amount of tools and techniques available. Some of them are clearly complementary but some seem competing. I’m guessing that I’m observing years of evolution/purchasing compressed into a single tool set though. This means I’m seeing all the evolutionary dead-ends as indistinguishable from the alive ones. Now if Microsoft could only indicate which ones are effectively abandon-ware (this is obvious in open-source) my life/job would be a lot easier.

Having said all of that, when I program in my spare time I do it using open-source tools. They’re cheaper and I feel more like I’m in control of the project. And isn’t that the point of software? It’s meant to make the user feel like he’s in control.

What evidence do you have to support this statement?

Just a personal perception that is likely entirely wrong.

If you think I’m a cheerleader, you’re in for a very rude awakening.

I’ve dealt with bigoted, zeal-filled, indoctrinated amateur Microsoft evangelists for years (the worst are the ones who desperately want to work for Microsoft, hoping that fighting the “good fight” will earn them some attention).

Sadly there was a period in my career when I was a Microsoft apologist, thinking it was necessary for me to “set things straight” on sites like Slashdot.

If anything the number of Microsoft cheerleaders has seen a dramatic slide over the past several years, and I think it has to do with Microsoft becoming less interesting as a prospective employer.

@jaynicks: Your link to Grygus doesn’t help your argument, I’m afraid. Anyone who thinks (from the bottom of the page you linked):

“A major part of the .Net strategy is to centralize the software you use and your own business and personal data on Microsoft owned serves so they can charge you a monthly fee for access to your own stuff. Access will be, of course, by Windows PCs and Windows mobile devices, only through Microsoft’s .Net servers and only by using Microsoft .Net software, which you rent by the month. Fall behind on your .Net payments and you are out of business.”

can’t really be taken seriously IMO. I don’t see MS trying to get me to give them my business or personal data and pay them a monthly fee; it just hasn’t happened. And, since the linked page was from 6 years ago, surely it should have by now… Shouldn’t it?

@H. Eriksson: Apple being the ruler of the world would be just as bad, if not worse. Apple is it’s own monopoly in its’ own right. Can you buy OS X to run on hardware that isn’t Apple’s? Can you buy Apple computers with Windows Vista pre-installed?

@dennis parrott: “Delayed write failed” means that you got bit by disk write caching. It’s usually caused by not properly stopping the USB device (safely removing it); data in the cache for latter writing can’t be written if the device is no longer available. To fix it, you can either always use “Safely remove hardware” before removing the drive, or disable caching for that drive.

@Jeff Atwood: I agree with you for the most part. A couple of disagreements, though.

The list of have to install items is exaggerated. You just need the .NET 2.0 and 3.0 stuff and Notepad, technically. Because you choose to install all the other cruft doesn’t mean it’s required. Hell, with a little work you can use Borland Developer Studio as your IDE.

I think Open Source is fantastic. I use various OS libraries and tools, and always donate something if there is a way to do so and I find the project useful. However, I’m firmly in the MS camp as far as operating systems go. Why? Because that’s how I earn a living. I write Win32 applications for PC users, both business and consumer. When 94% of the desktop software market belongs to Windows, I’m writing software for Windows. I don’t use MS’s IDE’s, because Delphi is 1000 times better. I can do a full build of a 1M LOC project and be running it in the time VS takes to change the cursor to an hourglass. I have all of the code completion stuff (Code Insight), all of the code template stuff, and all of the other developer productivity features too.

I spent about a year learning Linux a while ago, thinking it would be pretty cool. It was, but it’ll never be a big desktop OS for consumers. It’s too hard to remember all of the different places you have to go to change configuration stuff, and KDE/Gnome are still waaaay behind XP or Vista. (An example? I have a widescreen Gateway laptop, and the screen resolution is 1366 x 800. Try getting X support for that, especially “out of the box”, so to speak. g) But I don’t belittle the people who choose to run Linux instead; more power to them. I just don’t have any reason to join them.

Apple has the same problem. They don’t have any market share, despite all of the amazingly funny ads they’ve been running lately. (My favorite recently is the relatively new “Mac Geek” one, BTW.) And as I mentioned above, they’re basically their own type of monopoly, albeit considerably smaller.

“Only listen to Microsoft Sales pitch, or open my eyes and realize that nearly all significant I.T. work done in the last 10 years has not been done on the Microsoft platforms”

Nice quote. I’d like to see you back that up with some real evidence.

Anyway a look at history will help some here. If Microsoft hadn’t won the hardware wars with software, we’d be much worse off in my opinion. Back in the early days of PCs, circa 1982-1984, you’d walk into a software store, Babbage’s was the biggie then, and you’d find software for 10 or so different hardware platforms. There was nothing worse than having a TI 99/4A and wishing you could play a game that was on the Commodore 64 or one that was on the Apple IIe or one that was on the Atari 400 or one that was on the Amiga…ad nauseum.

A lot of you are too young to remember those days. Having many different platforms with different software SUCKED! Nothing written for one system would run on a different one. That led to endless confusion and stifled the market. Along about that time, cloned IBM PC hardware was starting to show up. Microsoft realizing that this could be a major new market released it’s own version of PC-DOS called MS-DOS that would work on not only the IBM PC’s but the clones as well.

The availability of cheap clone hardware and MS-DOS lead to the end of the hardware wars by the late 1980’s. By then you pretty much had PC clones and Macs and that was it. When you walked into a computer store there was much less confusion. You in essence had only two choices to worry about. PC or Mac and PC was about 90% of what people wanted. This meant that PC’s were the de facto standard. And standards are good things right? Heck yeah they are, we could all get on with business and not worry about compatibility.

It was this worldwide computing standard running Microsoft software that has created so many jobs and wealth that the entire world has benefited from over the last 25 years. So in that way I say bravo to Microsoft. That doesn’t in any way mean Microsoft is a good company, but the benefit of having a standard computing platform is undeniable.

Open source efforts and internet operating systems may eventually make Microsoft a footnote in history. But at least give them credit for bringing us all together and giving us the chance to make that choice in the first place.

There was nothing worse than having a TI 99/4A and wishing you could play a game that was on the Commodore 64 or one that was on the Apple IIe or one that was on the Atari 400 or one that was on the Amiga…ad nauseum.

You have an interesting memory of that time. I remember a period of incredible innovation and progress, where innovation could be rewarded and was much more difficult to stomp out. The Amiga was a culmination of that innovation, featuring software and hardware innovations that we didn’t see on the PC side about 9 years later.

We don’t know how the world would have turned out if Microsoft wasn’t there to “unite” us, and I don’t think I’ll be sending a thank-you note to Microsoft for their selfless efforts.

I have been a pro-Free Software guy for a long time. I got started with it in 1993. Before that I was a DOS/Windows user. I have come to love the community. It is so easy to find passionate people who really care about the code and their craft.

That is one of the things I don’t understand about the Microsoft crowd: No passion. It is very rare to meet a Microsoft developer who is passionate about his tools. They are all just tools. A means to an end. A pay check and something to do between 9am and 5pm.

In the free software world we have epic debates over Perl vs Python or vi vs emacs or Linux vs BSD or Gnome vs KDE or…or…or…ad infinitum. No shortage of passion or causes here. And the people with passion really know their stuff all the way down to the nitty gritty details of the code. But I have never come across two windows guys in a bar passionately extolling the virtues of their particular choices as I have with free software guys.

Why? Is it because MS just doesn’t offer choices? Is it because there is something soul-sucking about programming with MS tools? I have been going to Linux User Group meetings for years and they are great fun. Where is the local Windows user group meeting? I’m not aware that there is one. I just did some google searching. There was a Windows 2003 meeting last April 19th. Sponsored by…Microsoft. At a Microsoft office here in town. Hmm…hardly grassroots. There is a mailing list…with hardly a fraction of the activity of the totally grassroots Linux user group mailing list. And 15 people registered on their website. There are 101 people registered on the LUG’s site.

There are a lot of people who code on the Windows platform. So why are they generally so uninteresting?

I find it pretty sad how defensive/angered some of you get, its just software not you’re life. Use the tool, don’t let it use you.

@Dennis Forbes

So you are saying there is no more innovation and creativity anymore? No more progress? Surely you jest?

So you are saying there is no more innovation and creativity anymore?

I wouldn’t go nearly that far, but it definitely isn’t as vibrant and alive.

Perhaps it’s just clouded reminiscing, but I look back at Compute! and similar magazines from the mid-80s, and there was just such activity and excitement. The number of successful uISVs was enormous, and everyone had a real shot at taking on the big boys.

Yeah I agree it was an exciting time. I was no fan of IBM or Microsoft at the time. I guess you could say I was a zealot for Mac and Amiga even though the term wasn’t really used. I could not for the life of me figure out why everyone couldn’t see these machines were so much better than the PC and DOS.

The only point I was trying to make was that regardless of the intentions of Microsoft, I think society and technology in general benefited from the unity they provided…er…sold to us.

Hi Jeff, great post indeed (and thanks for the font).

Yet I find it very pathetic - the picky replies of “I know some Python IDE” or “I know some startup with MS development tools” blah blah blah… indicate that the core message is failed to deliver.

Wake up guys (I bet mostly developers here?), no users give a shit on your side in the technological racism. Get your feet wet in all alternatives and deliver what deemed best to your users.

While I agree that MS pumps out new IDE’s and versions of the framework at a break neck pace, I don’t feel that it’s necessary to convert my code everytime a new version of the framework is rolled out. Perhaps web developers face challenges there that I don’t on the desktop, I don’t know. But I can you that I currently support apps in VB6 , .Net 1.0, 1.1 and 2.0 and I don’t have a problem with that.

I guess I just wonder why you say something like “Sometimes, you wonder if choosing an environment where things change more slowly isn’t a better long term evolutionary decision.”

The VB6 environment has been static for 8 years. So far there’s no reason to change other than the fact that you could do things better in .Net 2.0.

I think that jaynicks hit an important point: this isn’t a healthy industry right now. Microsoft seem want to dominate everything they can (try thinking of a major IT vendor that they aren’t now competing against), and they often seem to be more about squeezing customers or putting others out of business with lower cost clone products, rather than being innovative or useful to their customers. It’s unhealthy and has had weird effects, including pushing lots of disparate groups and companies towards the opposite corner. To be pro-Microsoft these days I think that you have to close your eyes to a lot of unpleasant technical and ethical issues.

I’ve used Microsoft products my entire life, and much of my work still involves Microsoft stuff like Windows and .NET, but I’ve found the air a lot cleaner on the Linux side, so that’s where I now spend as much my time as I can. It’s not about the rate of change (Open Source moves faster, especially at the leading edge), but about being able to be enjoy what I do, without the screw-or-be-screwed attitude that Microsoft senior management seem to have.

"Can you buy OS X to run on hardware that isn’t Apple’s? "

Why in the heck would you want to? We’ve seen the kind of stability that leads to with Microsoft Windows for the past 10 years. Do you want to be able to run Tivo on your toaster? Do you want to upgrade your cars computer? Why wouldn’t you want to run an OS that is tuned to run on the hardware?

I’d love to see an MS branded laptop or desktop, provided they went for quality manufacturers and not “Uncle bobs NIC-a-torium” or “Hard-drives-r-Us”. Look at the Xbox and Xbox 360 as examples of what you can do with MS software when they control the entire machine. The graphics on the 360 blow away any Pc except the ones running $700 pro graphics cards.

really nice post. interesting reading to see someone put it in black and white.
i emerged from university a die hard java programmer. i had never seen a better IDE than eclipse. actually, for all intensive purposes, i still view eclipse as the best IDE around.
about half way through my first year of real work, we were thrown to the sharks of .NET having to abandon all that was safe and good.
at first, i was very resistant, knowing all that is said about Microsoft, but now, a year later, i must say that Microsoft have gotten their act together…to a degree. obviously the greatest step up from java, c++ and other OO languages will be the drag and drop GUI creators, and the addition of structures such as generics and web services are great. but i still have my reservations.
man, it’s still difficult to really get those GUIs to do what you want them to. if you really want to get clever.
and the worst problem…interoperability - between .NET and other platforms, and even worse backward compatibility.
i have systems that work perfectly on windows 2000 but fails on 2003 for the most trivial of things. .NET has a great SOAP interface but it only works when communicating between Microsoft servers (as i tragically realised when we went live with a system (worked when testing on local servers but failed when going to the live Apache server).
Microsoft are honestly doing really great things and i look forward to .NET 3.0 but with the nagging worry of how much of it will be backward compatible

Just can’t believe you’re not using Visual Assist with Visual Studio. I couldn’t live without it (though I develop in c++).

“Sometimes, you wonder if choosing an environment where things change more slowly isn’t a better long term evolutionary decision.”

I’m glad I scanned through the comments first. Martijn Fassen’s comment largely encapsulates what I was going to say, so I’ll just add this little bit:

Much of the rapid development in the open-source world is in optional frameworks, libraries, and so on. Rarely does anything spring forth fully formed, and even when they seem to, they usually have been percolating in obscurity for a while. The deeper you go down the stack, the more slowly things change, with loose coupling between layers usually being a design goal and the primary basis for backward and forward compatibility (ie. you can usually replace a layer without disrupting things above or below).

Microsoft’s stack, by contrast, is tightly integrated for both good and ill, with binary compatibility being the primary basis for backward compatibility. This makes big-bang releases inevitable, as well as forced migration off of technologies 2-3 releases ago.

This means that in Open Source, while you are usually not forced to adopt anything, and old code will stay useful for a long time, if you do want to remain current, there is always something new to learn. Change is constant.

Whereas, with Microsoft, you only need to change your stack every few years, but you must change your stack in lockstep (relatively speaking) with the rest of the industry, and much of your existing investment in tools and code will be obsoleted. Change is episodic.

Emacs is awesome (and I’m a Java developer currently)

But when I was doing C++/MFC development, I used Visual Studio and loved it. It really is an amazing IDE and anytime I find myself doing Windows development, that would be my tool of choice.

I’m sure the argument has been made before, but tools like emacs and vi get you a lot ‘closer’ to the code in my view. You really have to get in there and write the code and you’ll know exactly what it’s doing (if that’s your thing). But there’s no way you’d get me to make a .NET component or Windows application with it, there is so much scaffolding that has to be generated first. Visual Studio is perfect for that.

Cheers,
Josh