Yeah, so this year has been a bit roller coaster ride. Economy in the toilet. Jobs in flux. Here's hoping that 2010 at least provides some stability.
Lately I have had the opportunity to focus some effort on iPhone development. It is a steeper learning curve than I was expecting. Objective-C, despite being "merely" a superset of C, brings enough new things to the table to make my mind bend. Thankfully I did some brief coding in C# a while back, which helped me ease me through the Obj-C style of garbage collection, delegates and protocols. I'm getting my head around creating interfaces with Interface Builder and linking them with code. More recently I have learned about Navigation Views and Table Views.
My rough plan is to make a utility forms app first to learn the ropes. After that I will move on to a simple game to get my feet wet with OpenGL ES. Then the fun can really begin and I'll dive into something more meaty.
While I still don't have an actual iPhone, I did buy an iPod Touch. That should be good enough to get me started. One thing I quickly learned after getting it is how much I love the Touch as a gaming machine. It really fits in well with the play-when-you-can-find-a-minute style that seems to be my own trend lately. I'm still catching up with all the great games for the platform. My early favorites are California Gold Rush and Cooking Dash.
So for the three people that still read this, thanks for sticking with me. If you're just now dropping by then why don't you add me to your Google Reader list? I promise to behave and not bombard you with updates.
I'm continuing to learn Objective C and the coding conventions employed by the iPhone software environment. I'm over the hump when it comes to understanding how to use Obj-C. The big hurdles now are learning the toolkit.
I have some forms displaying and am navigating between them adequately. I'm continuing to learn classes like TableViews, NavigationControllers, and more recently ImagePickers.
Some bugs that have caused me problems were related to Objective C being a weakly typed language. You can create an object of the wrong type and not find out about it until run-time when some method goes off to the weeds. Also, you can send messages (C++: invoke methods) to objects that are nil (C++: NULL) and the run-time environment won't complain. This leads to strange behavior later and haves you scratching your head as you trace back what happened.
The memory management scheme is also something I still need to fully understand. Objects are "retained" and "released" instead of explicitly freed. In my opinion this doesn't solve much when compared to C++'s "new" and "delete". Both ways have their benefits. It just requires a different way of thinking with regards object lifetime.
As happens with a lot of my projects, it is turning out to be more involved than originally anticipated. Not that I'm complaining. It allows me to learn even more aspects of the system and environment before jumping to a game.