Follow @jack_ganssle

The logo for The Embedded Muse For novel ideas about building embedded systems (both hardware and firmware), join the 27,000+ engineers who subscribe to The Embedded Muse, a free biweekly newsletter. The Muse has no hype, no vendor PR. It takes just a few seconds (just enter your email, which is shared with absolutely no one) to subscribe.

By Jack Ganssle

How Microsoft Saved The World

Published in Embedded Systems Programming June, 2003

My backup laptop failed, it's LCD screen a scrambled mess of static.  Like many speakers, and much to the chagrin of Cliff Stoll, I rely on Powerpoint for my firmware seminars. Airport security is always much amused by my twin laptops, but a failure would leave me dead in the water, I'd be relegated to making shadow puppets in the accusing glare of an undriven projector. The spare is an insurance policy against technology failure that I've never had to place a claim against. But Murphy lurks always, ready to trap the unwary and unprepared.

Annoyed at the failure, I decided to use this event as a chance to buy a shiny new machine with plenty of gigaweenies and mucho Hertz. Oh happy day!

Maybe not. The new unit runs Windows XP. For reasons clear neither to me nor to Microsoft tech support it won't correctly install Office 2000. 

So, back to the store, plunk down a half-kilobuck for Office XP. The expected trivial installation sequence crashed as the not-completely-removed tentacles of Office 2000 did, well, something bad. More annoyed now, an hours-long reformat of the hard disk and even slower reload of Windows left the machine net-dead. To my woe I discovered that the Windows XP environment uses a somewhat different networking scheme than that on my Win98 desktop. No problem: the folks in Redmond have you load new drivers on the Win98 machine. Except that it's been 2 years since I bought that computer, 2 years in which too many programs were installed and deleted, creating who knows how many broken registry entries. That machine died immediately after loading the new drivers.

So I reformatted that disk, and reloaded many CDs worth of programs. The engineer in me optimizes everything, so it seemed reasonable to load Office XP instead of 2000. After 6 hours of work the machine came up with all of my apps, connected to the network, and actually ran fine. For an hour. Then it crashed and wouldn't boot. Another reformat, reload, and the same result. Finally in frustration I reformatted and went back to Office 2000, which works fine.

@$(*#$ Microsoft! 

In the dozen years I've been writing for Embedded Systems Programming I've learned that using the proper noun "Microsoft" without immediately qualifying it with "sucks" floods my mailbox from angry readers who feel I'm a Microsoft shill. Mob thinking is that the President's axis of evil should include Microsoft. Anti-Redmond rhetoric borders on hysteria. 

Yet if it weren't for Microsoft I'd wager that many of us wouldn't be computing as easily and as ubiquitously as we now do. The combination of DOS and IBM made the PC market explode. My first PC cost $7000, which included two (optional!) floppy disks. Hard drives were all but unheard of on microprocessors. At the time dozens of competitors sold decent machines, mostly running CP/M, for much less money. IBM brought little to the party except their stellar reputation and a software strategy based on DOS. 

Microsoft bought DOS for $50k from a small Seattle outfit. A bit of repackaging and the vision to acquire the product started the company's rise to their huge successes. Many fault Microsoft for this action, and a later lawsuit put substantially more money in the inventors' hands, but it was a shrewd business move. Was it luck or was it vision?

IBM's marketing and the really useful DOS, coupled with a variety of applications, made the PC a natural winner. Their choice of the hermaphrodite 8088, a 16 bit CPU with an 8 bit bus, and the ability to address 640Kb of memory were wise and empowering. Sure, the 68000 was better, but Motorola was too late to meet IBM's market window.

People today sagely shake their heads and wonder how IBM could plop video memory in the middle of the 8088's address space, which gave the 640k limitation. Fact is, at the time no one ever dreamed we would need or could use so much memory. I'd worked on a $10 million mainframe just a few years earlier that had three quarters of a meg of 36 bit words of memory (yes, 36 - that's not a misprint. Univac's Fielddata was an alternative to ASCII that packed six 6 bit characters into a word. Needless to say, there was no lower case). That machine, with a 750 nsec cycle time, supported hundreds of concurrent users. Not well, but back then any sort of computer access was a godsend.

So 640K for a home machine seemed like absurd overkill. How things have changed in two decades!

The PC came in a very nice package, one that looked professional and reasonable in a business environment, something that could not be said of the Ohio Scientifics, SOLs, MITS and other machines, some of which had wooden enclosures. Companies snapped them up faster than home users. Killer apps flowed like water: word processors, spreadsheets, databases, and many more.

An illegal immigrant named Phillipe Kahn started Borland, selling a $29.95 Pascal compiler for CP/M that was fast, interactive, and fun. They quickly caught on to the PC market, though promised their customers they'd never abandon CP/M support. That promise evaporated faster than the S-100 bus.

Soon everyone was building PC apps in Pascal. Borland followed with their Turbo C compiler, which was just as much fun as their Pascal. I credit Borland with making C affordable and launching a wave of C coded applications for the PC platform. 

The early PCs came with the complete source code to the BIOS as well as full system schematics. This was long before the days of custom ICs whose 250 pins go to a mysterious box shown on the schematic; all of the parts were standard devices available off the shelf. Before long competitors offered clones at far lower prices than IBM anticipated. 

The resulting volumes drove computer prices to the astonishing numbers of today. 20 years ago who would have dreamed, in their wildest imaginations, that we'd get 1 GHz processors with 20 Gb of disk and 128Mb RAM for $695? 

DOS, though, was just a barely souped up version of CP/M. Early versions matched the hardware with no hard disk support and the most primitive of filesystems. Millions of non-computer folks learned to use DOS, though generally only in superficial ways. It was hardly user-friendly and had long cryptic command strings people entered with a blind fervor and lack of understanding that was horrifying to us who knew computers. 

Before a real GUI most people couldn't use a computer. UNIX machines of the time cost far too much for the average person. And how many non-techies, especially before X, could use UNIX? It's a fantastically powerful OS: you can do anything with it! but have to be an expert to do anything at all.

I worked on an early Lisa machine from Apple, which titillated with a completely unworkable yet compelling GUI. Then the Mac arrived; I still remember that moment of epiphany when I first tied one in a computer store. My rookie mouse driving was awkward yet thrilling, the ability to select desktop icons and launch apps was a complete sea change from any computer I'd ever even imagined. I bought one on the spot, and forever loved that machine, despite it's unbearable slow single-floppy drive.

Microsoft's real genius surfaced a few years later with Windows. Win 1.0 was worse than awful. 2.0 not much better. Even 3.0 was practically unusable. Through failure after failure Microsoft kept to their vision, continued pursuing the GUI desktop that finally succeeded after years of effort. That's almost unheard of in our failure-adverse society. 

Some argue Windows was a stolen knock-off of the Mac interface. No doubt that's true. Steve Job's trips to Xerox PARC, though, makes Apple look an unlikely virgin. The free flow of ideas out of PARC benefited both Microsoft and Apple, and more than anyone, their customers.

Windows brought computing to the masses. The Mac was arguably better, certainly a cleaner and more reliable design. But their closed architecture philosophy doomed the machine to a small niche market. In this business technical excellence is not what determines who wins.

Windows won. Despite its flaws, it dominates this industry. Is Windows the optimum OS? Of course not. It's a god-awful mess, too complex, too fragile, and at the moment unsuited for the security threats implicit in a networked and mean-spirited world. But it sure beats that old CP/M system I had years ago that crashed constantly, or the PDP-11 that used impossibly slow mag tape as the only mass storage medium, or the 1108 hidden behind secure walls and protected by a priesthood of operators who gave us 24 hour turnarounds on our runs - if we were lucky.

Today I exchange Word files with people all over the world; the universality of this file format (OK, OK, these file formats. I hate it when they change formats with every upgrade!) making such communication possible and easy. It even works across platforms, Apple and PC, and sometimes even to Linux boxes running various open source office platforms. That is pretty cool, and is essential for universal computing. 

Computing has never been better.

Our expectations are so high, though, that computing has never been more frustrating. We expect the machines to perform flawlessly and are disappointed and angry when troubles hit. When my ISP glitches and net access disappears for an hour I'm left adrift, not quite sure how to cope. Rebooting Windows prophylacticaly to avoid resource depletion and unexpected crashes is absurd and annoying. 

Despite all of the flaws in their products, Microsoft truly enabled the age of the computer for everyman. I credit them for having the vision and patience to pursue a GUI despite so many failed versions, and for generating (eventually) an integrated Office suite that offers more capability than I could ever use, yet that works amazingly well. Perfect? Nope. But really, really good.

And by the other measure of success in our capitalistic economy, profits and net worth, they've excelled beyond all expectation. For their stockholders (I'm not one! and kick myself for not having jumped in when they first went public) they are doing the right things.

The computer world is changing, though. It's saturated, most Americans have easy access to all the compute power they require. The replacement market isn't as healthy as of yore, since new generations of machines now offer only incremental, not revolutionary, performance improvements. Windows and Office are mature and probably can't offer much more that the usual customer would care much about. New growth opportunities will have to come elsewhere for Microsoft to retain it's dominance.

The world has been searching for the next "killer app" when it's right under their noses: embedded. That's where all of the market growth will be. Our lives will be so computationally rich in the future we won't be able to imagine a processor-deprived existence. Plenty of PCs or PC-like devices will be around, but there will be a fabric of interconnected computing that controls and guides our every action. This is where the action will, which Microsoft does seem to recognize.

Microsoft must be successful in embedded systems or they'll wither. Linux and as yet other unknown products will arise to challenge their desktop hegemony. Since they've traditionally had practically 100% market share, any new product with any reasonable level of acceptance will only cut their revenues. And 100% market share translates to near zero growth opportunities.

The company has the resources, and could easily buy every extant embedded tool company for cash! and still have billions left over. 

The market is ready for Microsoft. The cost of electronics keeps falling. A pretty decent 32 bit embedded computer is quite cheap today. I expect that as LCD screen prices fall GUIs will be as common in embedded systems as they are on desktops. Will Windows CE fill that niche?

CE is a pretty good idea - a nice GUI with an API everyone knows. Perfect it ain't, but there's legions of programmers who are competent Windows developers, ready to crowd out those of us who grew up on traditional embedded OSes like VxWorks.

Redmond cannot succeed in this market using the powerful marketing tactics that worked so well in PCs. Their customers aren't consumers, now; they're engineers. Most want technical elegance. Embedded apps demand reliability. Though the cost of transistors continues to plummet asymptotically towards zero, many, many embedded systems will remain the domain of limited resources where memory, power, and CPU cycles are all in short supply. Microsoft successfully gambled that code bloat would be eclipsed by cheap CPU cycles and disk space. But that will not work in the embedded space. 

Moments before we went to press Microsoft announced that all of CE's source code will be availableI under their "Shared Source Initiative". The news is too new to interpret completely, but it appears that some or maybe all Microsoft customers will be able to get and modify the source. This is a great move, a necessary step in creating trust in CE's reliability. The company claims they will accept suggestions for improvements - a good thing, but not the community-embracing spirit of the GPL which thrives through developer involvement. I think Microsoft has come very close to a decent business model for CE. I hope they form a community relations group that provokes, demands, and embraces changes and suggestions from us users.

 Next, Microsoft must make CE comply with the DO-178B safety critical standards. Most other embedded RTOSes are headed that way. DO-178B doesn't prove correctness, and is itself a long way from the perfect certification tool, but does have a lot of support. Complying is, at the very least, another way to demonstrate reliability. A "reliable computing initiative" that seems driven by the marketing department, is not.

Despite all of the hoopla about Linux, I think the future is far too hazy to predict its dominance in the embedded world. It, too, is big and resource intensive, limiting the domain of apps it's appropriate for. It has been used in flight software and other high-rel applications, but it, too, could profit from DO-178B certification. 

20 years ago we could not even dream of where we are today. The next decade is equally murky. I do think we're at a crossroads in the industry, and that Microsoft is facing new challenges beyond any they've seen before. They saved the computer world, putting a lot of power on everyone's desks. But their old model won't scale to the new world order.

Yet I'd never predict their demise. With deep pockets and a lot of smart employees, there's little doubt they can, if they chose, produce the embedded framework that powers the future.

We live in interesting times!