I have one suggestion, though: Add the timer to the various run loop modes at the end of the -applicationDidFinishLaunching in AppController.m. It should look like this:
////
//
// setup a simple timer to call our render function
//
////
mainTimer = [NSTimer scheduledTimerWithTimeInterval:(NSTimeInterval)(1/30.0) target:self selector:@selector(render) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:mainTimer forMode:NSDefaultRunLoopMode];
[[NSRunLoop currentRunLoop] addTimer:mainTimer forMode:NSModalPanelRunLoopMode];
[[NSRunLoop currentRunLoop] addTimer:mainTimer forMode:NSEventTrackingRunLoopMode];
[mainWindow makeKeyAndOrderFront:nil];
That way the composition does not stop rendering while the user selects something in the menu or while the open file panel is visible.