Day 3. The day when you take all the lessons from Tuesday and try to put them to good use.
I began the day getting an overview and detail of Core Graphics and Core Animation. In proper Apple style, these frameworks are slick and easy to use. I don’t think that some people appreciate the difficulty of designing a framework. You have to balance power (ie leverage) with flexibility. You have to put everyone else’s shoes on and make sure that you haven’t limited some cool innovative idea because of some arbitrary design decision. But as I said, Apple has passed with flying colors on both counts.
The only downside of the presentation was that we couldn’t get the demo code for how they do the photo ‘house of cards’ demo. If you have an Apple TV, you know what I’m talking about. That shows the power and slickness of Core Animation.
In terms of what I learned, the most useful piece of information was about rendering and how the coordinate system is used to do everything. What does this mean? It means that the renderer always understands how much ‘space’ or ‘resolution’ there is to draw something. So, it always draws it in the best way possible. For example, take an iphone and run either safari or the maps application. When you zoom in, the screen is fuzzy for a moment and then gets really clear. That is the renderer + coordinate system magic in action. What is the take away from this? All displayed graphics (especially text) will look good on any sort of device.
The next session was about controls, views and animation. This was a great walk-through of building a cool looking app from the ground up. What do I mean by ‘cool’? Basically, how to leverage all the built-in animation capabilities of Cocoa Touch as well as the low-level apis of Core Animation. I think the example code for this session will be a great blueprint for custom animation of any iphone/ipod touch application.
What really blew me away was how easy it was to do what I would have considered extremely complex. For example, you can define a path (straight line, circle, random, etc.) and have the animated item follow it. You can change acceleration and apply all manner of transformations too. Very cool.
Lunch was sort of lame today. I unfortunately sat at a table of mostly Apple Engineers and they didn’t seem to want to talk too much. On the plus side, the lunches have had great food (pretty much sandwiches with a side + dessert).
After lunch, I got in the know about the new Push Notification Service. I can’t talk too much about it, but I will say that it will give an well thought out application additional polish.
The next session was about multi-touch events and gestures. Again, very interesting. At the moment, nothing pops into mind about how to use them more effectively in the application.
The funny moment at Q&A was a developer who wanted 6+ concurrent touches but wouldn’t explain what his program was trying to do. I have trouble with 2 touches. I can’t imagine using 6.
I finished up the day with with a lot(4+ hours) of programming trying to incorporate everything I have learned so far into the now infamous Wine Tool. I’m pretty happy with the result and I think the user experience (which was my theme of the day) has vastly improved.