Aaron Hillegass’ new book, titled “Core Mac OS X and Unix Programming“, is now available in the stores. In the past, we reviewed his previous book “Cocoa Programming for MacOSX” and we got a good idea of Aaron’s elegant writing style, descriptive chapters and advanced development under Mac OS X. In this book, he goes down under, teaching us how to handle and develop for the underpinnings of OSX, the core of the OS.The book starts with a refreshment of your C knowledge and paces extremely fast on more advanced topics of the compiler and C, all in the first 4 chapters. This book is not intended for newbies, it is a book for people who are already developers and have a good gasp of C or ObjC programming and are already familiar with UNIX.
You will learn how to use the compiler from the command line, how libraries work internally and how they “fit” into the whole framework. One of the biggest chapters in the book is possibly Chapter 7, discussing “Memory”, a very important topic, and Aaron does a good job teaching us not just how to handle memory efficiently, but also how to avoid common traps.
The book starts getting more interesting after Chapter 10 in my opinion, where I/O, permissions and file systems are discussed. Networking programming with sockets was an okay topic, but I believe that it was a bit rushed. The book starts getting interesting again in Chapter 15 with the introduction of multiprocessing and later multithreading (also a chapter that could have more information into it). Rendezvous, Distributed Objects, performance tuning and keychain authorization conclude the book among other smaller chapters.
I believe that this book is a must-have for any serious and/or professional developer for the Mac OS X platform. In fact, it is the only book that I know that goes deep and digs up hard issues, real questions seeking real answers (e.g. multithreading).
Not everything is great though. The book has a lot of source code listed and less actual text explaining that code. This resulted to confusion sometimes and so I would have preffered a bit more verbosity among code listings.
One thing I would have liked to see was a chapter with a sample driver. A USB driver for something… like for a web cam or a printer/scanner. Or implementing a remote system like “Apple Remote Desktop” (which would still be of value as the free VNC is extremely slow). In fact, I still haven’t seen any OSX books discussing driver creation without just scratching the surface.
Another small nitpick would be the choice of CVS as the revision control tool of choice in this book (a whole chapter is devoted to its usage), while professional developers buying this book (or attending Aaron’s classes at Big Nerd Ranch) would most probably be using the much more powerful Perforce.
The retail price of the book is at $98 and I believe that it is a fair price. Luckily for you, Barnes and Nobles sells it for less than $80. As someone once put it, “the book’s price is more than 30 times smaller than Aaron’s classes“. I met Aaron in WWDC briefly this year and indeed seemed like a very nice guy, smiley and inviting, surely the kind of teacher you would want. However, if you can’t afford, his now famous, five-day classes, this book is your best alternative for some good and tried knowledge.