Windows Is Bad

Microsoft Windows is a hideous mess.

this is garbage

Windows has no art or design, Windows exists only to support Microsoft’s rapacious demands for money. Microsoft has made extra dumb decisions, like moving font processing into the OS kernel, just to support cash cows.

Ongoing use of ancient tech

It has a file system based on DEC’s Files-11, which dates to the early 1970s. If that’s not bad enough, Microsoft hacked on “alternate data streams”, which makes every file into a directory. NTFS already had directories, although Microsoft made the super bad decision to call them “folders”. Microsoft chose not to allow anyone to enumerate alternate data streams, which means “copying a file” is a system call.

Processes and Win32

Starting a new process is a complete mess. The CreateProcessA Win32 system call has an absurd number of arguments, some of them bit-flags (so combining multiple booleans into one argument), One of the arguments to CreateProcessA is a pointer to one of two structs. One of the structs has 18 members. The other struct is apparently the 18-member struct, plus another struct that I just can’t muster the energy to look at. Appallingly poor design.

There’s also several variant create-a-process system calls, CreateProcessAsUser and CreateProcessWithLogonW. This illustrates a systemic problem with how Microsoft deals with inadequate original designs, or unforeseen needs that arise. They leave the old rubbish in place, and insert new rubbish that meets an immediate need, but doesn’t make up for, or take into account, the problems exhibited by the old rubbish.

The existence of multiple create-a-process system calls reinforces how bad the “spawn a process” category of starting a new process is, versus how sleek fork-and-exec is.

While I’m at the topic of “Win32”, Microsoft came out with Win32 just as every contemporaneous major computer vendor was transitioning to 64-bit architectures. To Windows, a “word” is still 16 bits wide. On a CPU with 64-bit data pathways and registers, and 48-bit addresses. Windows has been behind the power curve from before it began, and Microsoft has never looked to the future.

Ambiguous terminology

Microsoft uses baby talk, like “task manager”, “file manager”, “event viewer”, and “app” to describe their system. Nothing has a single-meaning-name. Every name is softened to make it “intuitive”, which smears out the meanings and makes them ambiguous. Remember folders? Nobody uses paper folders anymore, so the “intuition” involved is gone, leaving only the ambiguity.

If you doubt this, try to talk someone through viewing the event log unambiguously. If the other party says something like “I don’t see that menu” or “where’s the button?” or “I see settings, not preferences”, you’ve hit an ambiguity.


It’s slow. Even Windows fan boys say so. Every part of it is optimized so that Word, PowerPoint and Excel run fast. So things like process start up are slow. Multi-tasking is slow so that threads in Word can be fast.

1975 is calling, it wants its drive letters back.

Windows has multi-rooted file systems. When was the last time you removed a floppy from the A: drive? Decades ago, but the default “HDD” is still C:. Drive letters were dumb even in 1983, however. Version 7 Unix was released in 1979, with a single-rooted file system. The benefits of a single-root file system were widely known in 1983.

There’s the horror of backslash as path separator, leading us to people having to clarify which kind of slash is in any given URL. NPR announcers to this day say “forward slash” when reading URLs on the air.

The horrors of “text” files and the ambiguity of “file types”

The horrors aren’t limited to things designed in 1983. Microsoft wants people to use “Byte Order Marks” on text files.

Oh, my, god. Appending some text to some other text means you have to interpret both pieces of text. This is one of those classic dumbass decisions, where making one thing very slightly easier makes everything else in the entire world harder. It will 100% guaranteed cause some security bugs.

By chance, the world has settled on UTF-8 text encoding, which is byte-oriented, and not UTF-16, but occasionally, some Microsoft “app” will drunkenly create some UTF-16, causing confusion and heartache. Byte Order Marks will probably plague us to the end of time.

Somewhere along the way, Microsoft chose to make a distinction between “text” and “binary”. This did not have to happen. It confuses everyone except the rankest of beginners, which is exactly how Microsoft, owner and vendor of the Standard Business Operating System, does design. Make it so a moron in a hurry doesn’t have a question. Doesn’t matter if anyone else has questions.

You say this doesn’t have consequences except for minor confusion? You’re wrong. Interpreting file contents is difficult.

The distinction between file name and suffix is built-in to NTFS, and compounded by originally limiting the suffix to 3 characters. In 2023 you still see URLs ending in “.htm”, because it’s too expensive to have 4-letter “file types”. If this dumbness wasn’t enough, Microsoft conflates the format of file contents (one kind of “file type”) with the suffix (another kind of “file type”), and which “app” generally creates and understands a file’s format (yet another kind of “file type”), all the while using an on-disk file system that mostly has files as ordered streams of bytes. Asinine.

Marking files executable by file name led to the related stupidity of hiding file name suffixes from humans. Hiding file name suffixes has led to countless compromises by people clicking on trojans named “Nude Coed.jpeg.exe”. Microsoft has never officially enumerated the file suffixes that make a file executable either.

Magic file names “AUX”, “CON”, “LP”, “NUL” exist in Windows to this very day. It’s always good for a laugh when someone trips over them and causes security problems.

Binding you to particular machines for their licensing comfort

You’re tied to a single computer because of Microsoft’s need to restrict the use of everything until you pay them money.

With Windows on any given machine, you can “upload” files to special servers, as long as you use one of Microsoft’s special file transfer protocols. All of which have designated “server” and “client” roles. Put linux on that same machine, and it can act like a server and a client (for free!), thanks to the magic of ssh. That’s just one example of Microsoft tying you to one machine at a time, and causing you lots of discomfort.

It doesn’t have to be this way. Athena system at MIT (and at least University of Iowa) makes every piece of hardware impersonal. MIT started developing Athena in 1983. For a long time, MIT mostly used 32-bit IBM 801 CPUs for Athena machines, so in 1993, when Windows NT premiered, there was exactly zero excuse to tie users to a single machine except for licensing.

One thing that ties you to a single machine is…

Rudimentary windowing system

While we’re on the topic, Windows has a primitive graphical interface. X11 and NeWS windowing systems existed well before 1993 when Microsoft released Windows. They were network transparent. In 1993, only Microsoft could have turned back the clock on windowing systems by binding them to a single machine.

NeXT was roundly criticized for the same primitiveness a few years earlier. But since Windows is the Standard Business Operating System, it gets a big break from pundits in media Microsoft advertises in.