I had the opportunity to present a paper at the inaugural 360|MacDev conference in Denver this December. My chosen topic was to show how to use, reproduce, or hook into various cool things in Mac OS X. The paper itself (nearly done, only about 30-40 pages to go, hope to have it posted here within a week) covers four subjects:
- Crash Reporting
- Managed Client (a.k.a. Parental Controls)
- Authorization Mechanisms
- Time Machine user Interface
The last of those items is about a private API, but one which I expect to become public before long (it was originally going to be public, if you watch the first demonstration from the Leopard announcement). The remainder can all be implemented without any Apple private APIs, although doing so requires differing levels of effort.
The paper itself looks like it’ll be about 120 pages long overall. I’m then planning on updating and expanding it substantially to cover the above topics in greater detail. Eventually I hope to have something which I can publish properly, either through a self-publishing company such as Lulu or through a mainstream tech book publisher like Apress.
If there are any topics about OS X programming which you would find interesting, please tell me. One example I’m thinking to add would be something based around the Objective-C runtime, such as a functional language using the ObjC runtime as a dynamic OO base— probably something Lisp based, similar to Nu (but without any Lisp-ObjC language bridges).
For now, however, I’m including the slides for the presentation I gave on Friday. Due to a cock-up on my part, I didn’t bring my updated Time Machine code and exposition with me on my laptop, so the Time Machine section of the talk used the same details as a 2007 presentation I gave to the Toronto CocoaHeads chapter. I’m looking to update that soon, and that information will also be posted here.
There is also a decent chunk of code available via the official github project, which I will be updating and expanding as I work on the book. One order of business will be to implement a remote backtracer to remove the current dependency on the private Symbolication.framework on Snow Leopard.