I moved from those old systems like the C64 straight to MS-DOS because it was what my customers wanted when my company made the leap toward having me write application software. Until then all my experience had been to-the-metal embedded stuff, mostly in assembly because interpreted 8-bit BASIC is miserably slow.
And I continued to do embedded stuff in .asm and a growing crowd of pidgin control languages and I fought MS-DOS on incompatible platforms and finally developed a style that worked, mixing a platform-independent MS-DOS BASIC with a homemade library of assembly language subroutines. And I worked like that for about ten years, bypassing the features of both BASIC and the operating system that didn't work too well. I have systems out there which have been running since 1987.
In the early 90's I started to work in Windows 3.11 with VB 4.0. VB 3.0 was miserably slow and useless but 4.0 was a real compiler like my DOS compiler and combined with faster computers it was useful without the .asm sidekicks, which was good because writing .asm libraries for Windows is a royal pain in the ass.
Win95 came out and I was horrified; I had found that by loading a machine with RAM (a massive 24 MB, woo-hoo) and not multitasking and avoiding certain tools I could make a Win 3.11 system stable enough to run for years. But nothing I did would make Win95 stable. It crashed doing I/O. It crashed when the screen saver appeared. It would crash when you weren't even running a user application.
So I sent $50 of company money to this company called Red Hat for their distro of Linux. I'd been reading about free software and how great and stable Linux was and how you got the source code with it. Cool.
Well. Imagine my horror.
This is supposed to save me from the sloppy half-finished pervasiveness of Microsoft?
First of all, everything is written in C. Not just because the OS is written in C, but because the OS API is the C library. Whafuck? Using any other language, including assembler, becomes a royal pain in the ass.
(Side note: I hate C. C is a brain-dead unreadable mishmash designed to make mistakes as easy and likely to occur as possible, and to make them as expensive as possible when you make them.)
So I am thinking of swallowing hard and moving to C anyway for the reliability when I start to realize how the deployment model works. You must have binaries for these libraries which are the API. They live in different directories on different flavors of UNIX. Worse, they have compatibility problems. Worse, they are shared by all applications. Worse, your application data gets sprayed all over the hard drive, commingling it with the OS and other applications.
There are so many reasons this is a bad idea I hardly know where to begin. Oddly, this "feature" doesn't even show on the book's radar, so many other even worse features are there for it to mention.
I backed s-l-o-o-o-w-l-y away and ordered a machine capable of running Windows NT 4.0. Sure it was half the performance for twice the price and a pain in the ass to use, but it worked and all my subsequent apps ported effortlessly to 2000 and XP.
Now I thoroughly dislike Microsoft; I have hated Microsoft since their main crime was writing slow, crappy, bug-ridden BASIC interpreters for 8-bit microcomputers and only other geeks had ever heard of their mangy company. I am a fan of small, lean, efficient code. But I am also a fan of finished code. Indeed, lack of polish is my main complaint with the Redmond Mafia.
That a UNIX clone is their main competition just sucks. Incidentally, did anyone notice that Microsoft is hosting the free e-copy of this book? Their altruism is touching, isn't it?
Fortunately I can frequently escape the whole situation.
I can haz blog!