Cocoa Design Patterns
Learning OpenGL ES for iOS
Buy at Amazon Now
  • Cocoa Design Patterns
    Cocoa Design Patterns
    by Erik M. Buck, Donald A. Yacktman
  • Learning OpenGL ES for iOS: A Hands-on Guide to Modern 3D Graphics Programming
    Learning OpenGL ES for iOS: A Hands-on Guide to Modern 3D Graphics Programming
    by Erik M. Buck

Join us at Make-IT-Wright (Hackathon) April 11-12


The Decline of Xcode

Apple undoubtedly has a lot on its plate these days. From a developer's point of view, the new programming language, Swift, is intriguing. The new Metal API for efficient access of GPU features looks promising. SceneKit, SpriteKit, and other frameworks continue to grow and improve.

It's too bad the bread and butter for OS X and iOS developers, Xcode, has become increasingly unstable to the point of uselessness in version 6.1. There is a 6.1.1 available in theory. Sadly, Apple's on-line resources for developers including updates for Xcode are routinely unavailable (OK, unavailable from December 20 to the time of this writing) and ridiculously slow when available.

I applaud Apple for trying to improve the venerable documentation with some slick javascript, but it has a dark side. Apple's documentation search has always sucked, but at least Google indexed the documents. Apple's new format for on-line documentation effectively defeats Google indexing. Sure, Google will get you to a summary page. Then, the text on the summary page doesn't even contain the search terms.

Here is a picture of Apple's current documentation as displayed in Apple's own Safari (latest version for Yosemite):


I started writing this with the intention of enumerating the frustrating productivity encumbrances introduced in Xcode over the last several versions like dialogs that steal focus and obscure the app being tested or refactor operations that take 30 minutes on a fast machine for in a project containing 4 files, but I suddenly lack the will. I'll just leave you with two gems:

0x7fff97440132:  jae    0x7fff9744013c            ; __psynch_cvwait + 20

"note: please rebuild precompiled header"







Let it go, Let it go

If you haven't seen Disney's "Frozen," go watch it. To me, it is an expression of the power and delight possible almost exclusively through programming. Elsa wields a dangerous magical power to create. She hides herself and her power for the safety of others. She hides her power to fit in.

Many people from many walks of life see metaphors in the movie. The New York Post lists a few of them. Some say Elsa and Anna present an "allegory for a young woman’s coming of age — the inexplicable new feelings and ... sudden appeal to the opposite sex." Others think the movie represents the feelings of relief and empowerment when a gay person comes out of the closet. Christian themes, climate change messages, and critiques of both racism and sexism may be in there.

I say the movie is about programming. Elsa creates wonders of great value from almost nothing. So do programmers.  Elsa is misunderstood and feared by normal society. So are programmers. Elsa's creations sometimes take on a life of their own. The closest real life phenomenon is software (AI). Elsa's power can unintentionally harm people. That sounds like the software flying a plane or controlling radiation treatments to me. All acts of creativity bear some similarities, but the medium of software is almost uniquely powerful and valuable.

Most strikingly, the feelings of empowerment and freedom and creativity expressed by Elsa through song resonate in the hearts of programmers. "It's time to see what I can do - to test the limits and break through ... I'm free. ... my soul is spiraling in frozen fractals... one thought crystalizes..."  All programmers experience Elsa'a uplifting emotion of passionate creation followed by satisfaction with the accomplishment. At least I feel it.

To state the obvious: All of Elsa's creations in the movie literally ARE software. Her castle, creatures, weapons, and art are all computer generated 3D models produced with software and in some cases procedurally generated by software.


Loading and Displaying COLLADA Models

COLLADAViewer2 Alpha contains an Xcode project with source code to parse COLLADA XML files and display 3D models. COLLADAViewer2 is the successor to the provided with the "Learning OpenGL ES for iOS" sample code. This article describes the content of COLLADA files and the features of the new viewer.

Click to read more ...


Green-Screen Video Effects for iOS: Video Processing with OpenGL ES

Erik M. Buck's latest InformIT article has been posted. The article explains the implementation of real-time video effects processing using the Graphics Processing Unit. A demonstration Xcode project is available.

To apply a green screen effect, shoot a video with a solid colored backdrop. Video processing replaces the backdrop color wherever it can be seen with something else like the image of a weather map. When viewing the final result, action in the foreground appears to take place in front of a weather map that was never there. The demonstration app has been tested with an iPad 2 and an iPod Touch with retina display. It should run well on any iOS device with a camera. The demo doesn’t work in the simulator because the simulator doesn’t provide camera support.