A few years after I started using computers, the very first IBM PC came out. I must have been one of the first people in Ottawa to buy this box, with 16 KB of RAM and no video card, because the salesman wasn't experienced enough to point out that the machine would be totally useless without the video card! Although the box wasn't useful, it did say "IBM" on it (at the time reserved solely for mainframes and the like), so it was impressive on its own. When I finally had enough money to buy the video card, I was able to run BASIC on my parents' TV. To me, this was the height of technology—especially with a 300-baud acoustically coupled modem! So, you can imagine my chagrin, when my friend Paul Trunley called me up and said, "Hey, log in to my computer!" I thought to myself, "Where did he get a VAX from?" since that was the only conceivable machine I knew about that would fit in his parents' house and let you "log in" to. So I called it up. It was a PC running an obscure operating system called "QUNIX," with a revision number less than 1.00. It let me "log in." I was hooked!
What has always struck me about the QNX family of operating systems is the small memory footprint, the efficiency, and the sheer elegance of the implementation. I would often entertain (or bore, more likely) dinner guests with stories about all the programs running concurrently on my machine in the basement, as we ate. Those who were knowledgeable about computers would speculate about how huge the disk must be, how I must have near infinite memory, etc. After dinner, I'd drag them downstairs and show them a simple PC with (at the time) 8 MB of RAM and a 70 MB hard disk. This would sometimes impress them. Those who where not impressed would then be shown how much RAM and disk space was still available, and how most of the used disk space was just data I had accumulated over the years.
As time passed, I've had the privilege of working at a number of companies, most of which were involved with some form of QNX development; (from telecoms, to process control, to frame grabber drivers, …), with the single most striking characteristic being the simplicity of the designs and implementation. In my opinion, this is due to the key engineers on the projects having a good understanding of the QNX operating system—if you have a clean, elegant architecture to base your designs on, chances are that your designs will also end up being clean and elegant (unless the problem is really ugly).
In November, 1995, I had the good fortune to work directly for QNX Software Systems, writing the training material for their two QNX Neutrino courses, and presenting them over the next three years.
It's these past 19 years or so that gave me the inspiration and courage to write the first book, Getting Started with QNX 4: A Guide for Realtime Programmers, which was published in May, 1998. With this new book on QNX Neutrino, I hope to share some of the concepts and ideas I've learned, so that you can gain a good, solid understanding of how the QNX Neutrino OS works, and how you can use it to your advantage. Hopefully, as you read the book, light bulbs will turn on in your head, making you say "Aha! That's why they did it this way!"