Tesseract home

This page contains information and links related to various flavors of Unix and Unix-like operating systems( Linux, the BSD's, Solaris, Mac OSX and others) as well as info on various related networking, security, storage, and assorted open source bits of code and info. Lots 'o useful stuff.

A brief commentary on the oft-asked questions: Why Linux? Why Open-Source technologies? Why not Windows?

Linux, FreeBSD, and other Unixen

Linux related

BSD variants

Networking and server applications

Open source applications, assorted

Why use Linux and Open Source tools when 'everybody' uses Microsoft Windows?

Once upon a time, I used to develop pretty sophisticated code in assembly language on embedded and now-defunct precursors (oh, and here too!) to modern personal computers. I was always very proud of the fact that these (pain to develop!) assembly apps were very stable as built. It was important to me that my customer not call me back to fix code that crashed often because I did not do my job right. This was just the way I was taught to work: you did it right, and you did not waste people's time by producing bad product. It's cultural, I suppose.

Then, for a long time, I used to develop lots of code under 8-bit CP/M machines. We could make these machines do quite a bit of helpful and high performance tasks using only 8-bit processors and very minimalist CP/M operating system, which was really just a simple program loader. Even then, I would read about Unix based workstations doing Real Science and Engineering while I watched as the first generation of 8-bit CPUs started to affect the technology markets at large. It was clear that computers were going to be everywhere at every scale of traditional and undreamt of commercial and other processes. Unix was expensive, specialized, and seemed large, but still it seemed to be (and still is..) applied to the largest jobs.

Then the IBM PC and Microsoft DOS came along. These machines quickly walked all over the sales of CP/M and 8-bit machines. But DOS really very much seemed like a derivative of CP/M. In fact, the early interface to DOS, via BIOS software interrupts, was written to nearly exactly emulate the very same layer in CP/M. Microsoft was good at innovation in those days too.....

Then MicroSoft Windows came along. First we used v.1.0 (!). At that time, Apple Macintosh based computers were fairly common, and Mac users would look over the shoulders of a Windows 1.0 user and wonder why anyone would subject themselves to this.

Then came Windows 2.0. More pain. But still, we found uses for it. And hoped that things would improve for those of us (me too!) pretty damned loyal to where Microsoft was going.

Then came Windows 3.0. Now we kind of could see the light at the end of the tunnel as 3.0 started to have some neat multi-media features and was released in the days of CD-ROM as the newest and greatest distribution format.

Then, Windows 3.1. More MultiMedia and other goodies.

By this time, I was working with Hewlett-Packard in Cupertino on a distance learning application. But what struck me about being at HP at that time was that, although most of the very talented engineers there were using HP 'Snakes' RISC workstations, there was a real buzz in Silicon Valley about the forthcoming Windows NT. For Unix people this was supposed to be an end-all, be-all solution, and it sounded it: all the benefits of the Windows momentum on the desktop, riding the real economic benefits of Moore's law, and all the industrial-strength benefits of Unix. It would be like Unix, only better, claimed Really Smart and Very Convinced HP folk. And we were excited about this!

Not everyone was convinced, of course. Some old-timers with much Unix background expressed honest puzzlement about Microsoft's lack of performance until then. Smart comp-sci types suggested it was troubling that plenty of operating system work had been done to enable state-of-the-art techniques based on proven and stable technology, as was the case under Unix, but that Microsoft did not seem to be employing this corpus of technical knowledge with it's newest offerings. To some, it seemed at the time like a dicey proposition. Certainly, until then, working under DOS and Windows 3.1 had a few 'hiccups.' Code could crash easily. You got the sense that the Microsoft OS evolution was going to be neat, but maybe a little pokey: it just seemed that simple Windows GUI code did not run as fast or as reliably as comparable Unix tools.

Still, the optimism was there. The pundits heralded what was to come from Redmond.

At some point, I started doing X-Ray detector work under DOS, using DOS memory extenders. And at about this point, we started to experiment with device drivers and graphical apps for high-performance imaging under Windows NT, first v3.51 ('Daytona') then NT 4.0. Device driver development was kind of convoluted and messy, things crashed often, but the real problem on ISA machines was performance. It just seemed that NT machines were kind of slow for things like interrupt handling, and this could be a problem. Even on fast machines, things were slow. A bit of research concluded that other, much better specialists in Real Time systems had benchmarked NT machines against Unix workstations and assorted other soft and hard real-time OSs. The results were devastating: Microsoft code took up to 10 times longer to do things like context switching than the very same computer loaded with other operating systems. Our gambles on Windows development were not paying off well because Windows kind of got in the way. Development tools were rich in feature sets, but stability was always an issue. Disk I/O for even small-ish data sets (about 12 megabytes per image, say) was slow, memory swapping was slow, everything was slow and got slower over time. Windows 95 clients kept losing block drivers to their CD-ROMs for no reason.

It just seemed so bloody sloppy. And obfuscated. When you want to really engineer or fix something, it's helpful to have documentation. Microsoft software and tools became more and more opaque and dedicated to Microsoft-only way of doing things. A kind of technical belligerance was seen around Microsoft and its technology. It wasn't political, it became practical: working with Microsoft technology, you always got the feeling that you would solve problems not because of Microsoft technology, but in spite of it.

Then somebody introduced me to Solaris. Industrial strength, well documented, lots of well understood ways to get things done, extensible. But not open. It was proprietary. There as a lot of documentation available, but it did have a kind of sealed box feel to it.

And then somebody else introduced me to Linux and FreeBSD. Wow. All the plans were right there (source code included!). All the docs were around in various stages of bad or good, but overall it was no worse than dealing in Microsoft or Solaris. And things evolved quickly. Drivers and kernels were improving. Support was available by way of networking with other experts, an odd but at the same time reassuring way of getting technical info.

I did not believe what I was seeing at first. I would ask to have large image files opened and processed on small, slow computers and be astonished as the machine and OS would not crash, would not choke, and would handle larger and larger volumes of image and other data. I marveled at the uptime simple Linux and FreeBSD boxes were getting compared to Microsoft (geez, I had just developed a complete hatred of rebooting a computer and thereby losing my work under circumstances that just did not seem to require this). Unix and free Unix tool were everywhere for the use, and the technology really never seemed to get in the way of the work.

Customers started to ask about this technology. Working as the Director of Technology for a large and now defunct dot-com, I was surprised at how productive and useful free OS and software technology had become. I discovered Beowulf computing on stacks of cheap Intel iron running free OSs could do some amazing things. And reliability, stability and performance kept increasing.

Even Microsoft seems to have problems with Microsoft products. Microsoft purchased the large (and, I believe, first big free email site) Hotmail.com from its original developers at the height of the dot-com boom. Hotmail.com had been developed under FreeBSD and apparently Microsoft tried to switch the entire Hotmail infrastructure to Windows. This was, at the time, a failure, and Hotmail was switched back to FreeBSD (I believe that it is now 'front-ended' by Windows but all back end infrastructure is still FreeBSD or Solaris...). Please note this is not conjecture nor rumor, and was a well documented case (and source of probable much embarrassment to Microsoft). Microsoft should simply know, and do, better.

Vendors suffer because of having to put up with Microsoft instability. I was recently in a lab that had bought an Atomic Force Microscope. The sales and technical people repeatedly pointed out that it was, in fact, possible to physically damage the device based on how (and how often) the Windows controller computer crashed, thereby slamming the microscopic scanning head. You don't want to worry about this sort of thing when you are a micrometer- and nanometer-literate person.

My customers will still ask me to work on Windows based systems and applications. But my customers also derive great benefit from the work we complete for them using Free and Open Source code. And I can't think of a single customer that doesn't curse Windows desktop and server stability on enormous numbers of computers they maintain and operate. And I am always still pleased when customers comment about how odd it is that their Unix and Open Source based OS apps just run and run, and how they just wish Windows would do the same.

Recently, I attended a talk on the World's Fastest Computer. It's based on Linux. Amazing! These people are world class experts on technology, and they picked an open source OS as the core of their supercomputer. And it's a reliable machine, that they can tailor exactly to their needs. They had the resources to do their software any way they saw fit and they ended up using Open Source code. I think this says something.

It's not political. It's practical. Open Source just seems to work better and not get in the way.

Somebody pointed out that Open Source code and Linux culture in particular was like re-discovering the joy of computers all over again. I must agree.


Amusing Windows performance topics


Back to Tesseract links