Sunday, July 29, 2007

Ballmer said "Developers, Developers, Developers" right?

I guess I have missed something there, because I know from experience that this is not quite true. I guessed he meant "Developers using the entire Microsoft product line" - which no sane programmer would ever do. I remember very well how I struggled to get a vanilla C program compiled on a SCO machine in the mid-nineties. SCO used Microsoft C compilers at the time. Even a large (but not multipage) printf() call refused to compile. A thing that never worried any other C compiler I've come across.

The overhead that a Microsoft C compiler produces is plain horrible: even a simple console application doing "Hello world" will set you back 25KB - 30 KB. The equivalent GCC program will allow you to link in an entire virtual machine - and leave you with room to spare.

Real programmers don't really like wizards. CLI code generators are faster and easier to parametrize and can be put into batch mode or post processing. Well, you're either a programmer or you're not, right? I'm sure that if programmable microwaves contained constructs like DO..LOOP and IF..ELSE a real programmer would find a way to use it. Development is done by using vi, make, cc, diff and a handful of other CLI tools. No need to go graphic here..!

Yes, you guessed it, real programmers like Unix. Nowadays you can compile virtually everything for everyone on Linux. That is called "cross compilation". And where there is no cross compiler (or it too cumbersome to install one), you can always fire up QEMU or VMware and use a development system like PellesC or LCC. These are high quality C compilers that reliably compile your source. You run the executable, do a few simple tests and we've ported our program again to the next platform.

Testing is vital. You want to be sure it doesn't segfault the moment the user executes your binary. On the other hand, it is fun to see your program run under a platform you didn't write it for in the first place. You play around with it a little bit and when you're happy, you upload it for the rest of the world. A well-ported program runs as if it were created for that platform. There is no shame in creating or using a port. I have created programs on my Sinclair Spectrum that were later ported to the PC. After a few years of further development, I took them to the next platform - where they happily lived and grew for the next couple of years. Are they ports, just because they began their live on a 64K/3.5 MHz Z80? I don't think so. I doesn't feel like it anyway..

A few months ago I say this article on Network World, where a so-called IT architect said in an open letter to the Open Source community: "And, frankly, we'd like to see more open source products for Windows that are more than just the Linux version recompiled, but truly Windows-centric open source tools."

This guy doesn't get it - at all. Because tools are born under Linux, they are not inherently evil. Nor do they lack functionality - provided they are well designed, well-ported tools. This guy is clueless! Not only doesn't he know that the choice of your development platform doesn't matter much, he also thinks that you may still bears the title "IT architect" when you build your entire IT infrastructure around Microsoft products!

The major "IT architect" of Microsoft had no clue that Windows and MacOS are built around two entirely different architectures. He completely missed the Internet revolution. He built a single user desktop OS and tried to sell it as a server product. He put a 32-bit shell on the top of a 16-bit kernel and claimed it to be reliable. You don't want that junk in your data center!

But our "IT architect" was right on one point: we should care about our poor misguided Windows users. For several reasons. First of all, if we drive all Windows software of the Windows desktop, the move to Linux will be easier. Second, by our software we can prove that we can do it better, cheaper and faster. Third, if our boss forces us to use Windows, at least we can continue to use that what we love and trust.

What does that add up to? Ballmer, our poor, nameless "IT architect" and us have a common goal, isn't it? No, not quite. You'd expect Microsoft to help developers where ever they can. But they don't. If you develop for any Microsoft platform - even if it is just for a port - Microsoft makes it as impossible for you as possible..

I've maintained a Forth compiler for many years. It began its life under DR-DOS and spread to countless environments: Windows 3.1, Windows 9x, Windows NT, OS/X, BOS, AIX, SunOs, Solaris, BeOS, Linux, OS/X, BSD, SCO, Coherent, Zaurus and probably a few more. I thought a PocketPC version would be a nice idea. PellesC and PortSDK did the trick. I now had an ARM version. Just a quick run and we're done, right? Wrong.

I don't have a PocketPC and I have no intention to buy one. I haven't used a portable agenda (paper or otherwise) in ages and I'd rather use a laptop when travelling. Besides, I already have a Microsoft mouse and I don't feel comfortable with trusting any slightly relevant data to a device that bears a Windows logo. Had this been a Palm, I would have no problem at all. Just download the emulator and it runs within minutes. But this was no Palm.

A quick look on the internet told me it was in the SDK. So I went to to download the beast. It needed proof I had Genuine Windows. Well, I always got some serial numbers at hand for occasions like this, so that was no problem. I downloaded the SDK, which was quite sizable, about 170 Megs. I tried to install it, but it said it could not find Visual Studio. Of course not! I just need the $%^&*#$ emulator!

Back to Google. There was a beta version of an emulator I could download. I signed up with Microsoft Passport ( I don't like it, but hey, to make things work I have no scruples). It showed me a link where I could download the emulator. I clicked it. Nothing. I clicked it again! Nothing. Later, I found out it that you needed Microsoft Explorer, because it wants to install some ActiveX control. Firefox doesn't help there.. Fortunately!

Well, I replied to the email Bill had sent me in order to confirm my email address. No, I wrote. Never did it. Never seen it. Get off my computer. This night it dawned on me. I saw it in a dream. Ballmer was jumping up and down, screaming: "We've screwed our customers for many years now. But that isn't enough for us. We at Microsoft want more. We need to screw developers, developers, developers!"

No comments: