|Home » Resources » Rants
Bastille Week 2000
A long time ago Microsoft had an operating system. Well, they called it that at any rate. They called it Chicago, then they called it Windows 94, then they had their New Years Eve Party, then they called it Windows 95. And it was the biggest event in computing since the birth of George Gordon Lord Byron.
But Windows 95 aka Windows 94 aka Chicago was slow. It basically ran the Windows for Workgroups 3.11 core with a new snazzy chassis called the Explorer Shell. This Shell was so heavy and cumbersome (and some would say moronic) that David N. Cutler was forced to bring back his Win32 subsystem within the kernel of NT where he said so many years earlier (Helen Custer page 124) it should never be found. Shortly after that, as we all know, David N. Cutler went off to race cars and found better things to do than haggle with the people in Redmond Washington.
When Windows 95 aka Windows 94 aka Chicago was first previewed Steve Ballmer called the event 'exciting'. Everything Steve Ballmer runs into is exciting. When NT released that first buggy Shell Technology Preview that crashed on everybody, of course Steve Ballmer had it installed on all his computers, it never crashed for him, and it was 'exciting'. Windows 95 aka Windows 94 aka Chicago was also exciting, very exciting in fact, and Steve Ballmer told us time and again that it ran faster than Windows 3 on the same hardware.
People at preview hooplas everywhere clicked their mice and watched the windows in Windows minimize and restore in slow motion, they listened to the sounds of hard drives in the throes of agony, and they remembered Steve Ballmer's words. This is faster, they told themselves, trying to remember what it had been like to run Windows 3 so long ago (that very morning no doubt) as they listened to the cover bands play U2 and The Who and stuff like that, while Microsoft reps on stage talked to one another in what were to seem like small private conversations that were nevertheless blasted out over the thousands below.
'You know Steve, I was just running this fantastic new Explorer Shell this morning.'
'Why that's funny, Bill, because so was I.'
'It's really fantastic, isn't it, Steve?'
'It sure is, Bill!'
Like that. The clothes of the new emperor were sort of ugly. The file system was getting in the way. People were losing a lot of precious disk space to it. There was no point in adding more disk space, because the operating system couldn't understand anything above 2GB. If you had 2GB, it said you had 2GB. But if you had 3GB, it still said you had 2GB. And so forth.
And like it was fast too, huh? Not exactly. It was supposed to behave like its big brother NT, but it had a hard time keeping stride. NT was an operating system from Digital Equipment, not Microsoft, and the ordinary programmers in Redmond had a hard time understanding it. It did all these real complicated things in thirty two bits too that threw them all for a loop. All they'd ever seen was CP/M and MS-DOS and now they had semaphores and mutexes and subsystems and kernel objects to contend with and they were lost. They wanted to get back to their bit blitting which Alan Kay's friends had finally taught them and draw some more kewl scroll bars instead.
But the customers were not happy. The guy who invented the Microsoft shortcut was now officially in hiding, and Microsoft's research department (a part time janitor with a Lisa) was told to re-invent the UNIX link. In the meantime, Judge Jackson was getting really fed up with them and they needed to do something to keep something else called middleware away from their front door, so they invented Windows 98 and with it they introduced a new file system called FAT32.
FAT32 is a FAT system. And on Windows 95 aka Windows 94 aka Chicago and even Windows 98 it's actually implemented as something called VFAT. FAT stands for File Allocation Table as we all know, and VFAT stands for Very Fat. And this file system was not only very fat, it was a real crash and burner too. This worried Microsoft, because they thought they were known for their high quality products. And they had to make this new operating system not only work, they had to make it faster too.
As we all know, Microsoft has never made anything faster in their lives. Never. Ok, once in a great while. Microsoft C 11 was better, if not faster, than Microsoft C 10. That was a great exception. It was only the second time in twenty years they'd actually succeeded in improving that product. Since then the product has again gone downhill, so we can all relax.
But Windows 98 was looking very bad. Now Microsoft had planned on asking twice as much as NT cost in the software stores around America, and just for an upgrade from Windows 95 aka Windows 94 aka Chicago too, so they had to think of something quick.
It was the janitor with the Lisa who saved the day. He came up with the brilliant idea of equating file alignment with image alignment.
Image alignment, he explained to Microsoft, was the size of pages of virtual memory.
So that's what that stuff is, moaned Microsoft.
Exactly, said the janitor. And the offsets in executables have to be calculated to take this into account. But that wastes a lot of space on disk, the janitor pointed out.
Who cares about waste? protested Microsoft. We sure don't.
But your users do, protested the janitor back.
So? asked Microsoft, but the janitor broke Microsoft off.
Windows NT lets the files save space on disk by using a file alignment of only 512 bytes and then re-calculating all the offsets at runtime, said the janitor.
Oh but that's much too difficult! protested Microsoft.
I knew you'd say that, said the janitor, so I've come up with a way for you to speed Windows 98 up with let's say little or no waste on disk!
Which is? asked Microsoft.
You haven't been paying attention, said the janitor.
Where'd I put my Combat Weekly? asked Microsoft.
So the janitor had Microsoft re-write their linker so that all sections in all executables were aligned not on a 512 byte boundary but a 4,096 byte boundary instead.
And as we all know, the average waste inside any file is the number of sections times the size of the file alignment divided by two.
Let's say we have 1,000 EXEs and DLLs on disk right now. Actually we probably have more, but 1,000 is a nice easy round number which makes it easier for the people from Microsoft to follow this too.
Let's say then that each of these EXEs and DLLs has five sections, which is a reasonably good estimate and even rather conservative.
That means that we have a total of 5,000 sections on disk right now.
Ok, now with a file alignment of 512 bytes our 'waste' is 5,000 times 512 divided by 2, or 1,280,000 bytes or 1,250KB or 1.22MB. Ok. 1.22MB. We might be able to live with that.
But the janitor with the Lisa wants Microsoft to change all these files over time. So that these same files will waste 5,000 times 4,096 divided by 2, or 10,240,000 bytes, or 10,000KB, or 9.77MB instead. So we take the same programs and then we re-build them all in one fell swoop and we lose 8.5MB disk space just like that.
8.5MB per 1,000 ACMs, DLLs, EXEs, OCXs, and what have you as a conservative estimate.
And what have we served? Well, Windows 98 was slower than even Windows 95 aka Windows 94 aka Chicago but it was supposed to be faster. So this was one way of making it look as if it was faster when it wasn't.
So the janitor had the compiler builders put this in as a default in their linker switch setup, then only as an afterthought left the field wide open for the sane people in the business, on the off chance that there were still a few left here and there:
But just to make sure the whole idea really worked good, they made it hard to find this switch, no one really talked about it much, and of course all the morons immediately upgraded to the new compiler even though the one they had was working perfectly.
And all of a sudden people started getting really bloated program files. Sure, they'd always been bloated, but now there was just that much more icing on the cake, for now there was the fantastic 4,096 byte file alignment in there, designed only to make Windows 98 look good and seem to run faster than Windows 95 aka Windows 94 aka Chicago when it wasn't really faster at all.
Never mind that Windows 98 and Windows 95 aka Windows 94 aka Chicago was officially a dead end street; never mind that Microsoft was betting the bloat on Windows NT aka Windows 2000 The Best Program Ever Written: the peons using Windows 95 aka Windows 94 aka Chicago had to be appeased.
And when you can't deliver product, at least you can make it look like you did.