I spent all day getting my workstation to build a set of pretty intense C# projects. I’m impressed that we got it working in a day (not counting the four days it took to straighten out my Visual Studio install on my Vista workstation). Having developed projects in Perl, PHP, Java and C, and having been a Linux administrator for 15 years, the process was a bit different, of course.
The biggest difference is how many commercial components I had to manage. Contrast this to a Linux environment where most packages are either pre-installed, or managed by the distribution maintainers. In a Linux distribution, having to hand-roll and maintain out-of-band libraries is not really kosher. One of the things I installed today blew my Windows Explorer away…literally, in one case, a hybrid Java-based installer crashed the Aero interface and dumbed my desktop down to “Windows Basic.” Wow, 64 bit Vista at that.
The other thing that I reflected on was the amount of “oral tradition” that guided the application setup. Since there’s never been a product installer (this being a web based application), setting up the IIS application was never scripted. Wow! This was like nothing I’ve done before using Apache. I can see how an apache .htaccess file would be like black magic compared to an IIS Basic Settings dialog…but its usually just a file kept in source control and often just another bit of automatically deployed collateral…and just another bit of code to a programmer. In this case IIS really involved hand-holding.
The combination of 64-bit and 32-bit libraries was tricky. IIS 7 was not happy for a while until we forced it to run applications as 32-bit. I’ve seen plenty of 32/64 bit dissonance on Linux before. It’s actually quite sad that 64-bit architectures have been around for what…20 years (the Alpha) and it’s still a problem. (It’s still a problem on my home Ubuntu box: Firefox won’t touch my Adobe Flash.) I wish someone, a decade ago, came up with fundamentally better ideas on how to deal with combining 32- and 64-bit software together. The notion of “just keep them separate” is quite unrealistic…unfortunately, it just increases the pain…and quite unacceptable when it comes to customers that have invested in proprietary 32-bit development libraries–people won’t pay for 64 bit versions if the 32-bit ones can be made to work. Makes me appreciate how much work has gone into making so many Linux distros 64-bit friendly, really. The crazy IIS install also made me love bash scripting all the more…it made me think this would be a great time to learn Power Shell and create a PoSH installer for all the components. (It won’t get asked for, tho.)
Time to keep an open mind. Time to shelve my pride. I am now at a place where PHP has being stomped out like a smoking cigarette butt. The last time I coded full time in a Windows GUI was in San Francisco, using JBuilder, approaching a decade ago. The JBuilder eventually got discarded for Notepad++ and well crafted Ant scripts. I wouldn’t think that anyone now would have the chance to discard Visual Studio 2008.
My last thot is…gosh, this is what, like, a million other programmers use every day. I’ve been using F/LOSS components for so long, I forget how much of the world F/LOSS is almost entirely missing. In “typical” desktop and server environment, Windows is still the majority in much of the world. Some day I will develop more with Linux. Mostly, I am grateful to still be employed…that’s is definitely the most important point of all. I won’t let Microsoft be a barrier to that.