Thursday, March 19, 2009

My Time With The iPhone SDK

Since it was first announced a year ago, I've been wanting to kick the tires on the iPhone SDK. The developer tools looked pretty impressive, though they're basically the same as those used for the Mac, and I tend to love all things Apple.

Up until about a month ago I haven't really had the motivation. Obviously I've spent my days working and it's hard as a father of young children to pick up the computer and start writing code on what little free time I get.

I needed a little help so I ordered Beginning iPhone Development, and fortunately I came into some free time as my previous project was winding down.

This book was easily the best technical book I've ever read. The examples are great and the code is broken down into chunks and explained thoroughly. On top of all that the authors threw in a lot of humor to make it a fun read.

One of the most daunting things for me has been figuring out Objective-C and developing in an environment without a garbage collector. Thus far in my career the bulk of my experience has been in Java and .NET, so keywords like alloc, retain, and release are foreign to me.

Also the majority of my UI work has been using HTML, though I do have some fat client experience with Swing and .NET. Cocoa uses a similar event model as what I've seen before, however it's taken a little while to get my head wrapped around nibs, which can be thought of as freeze dried objects in an XML format, kind of like a Spring config file in the Java world.

Now that I've built a foundation of knowledge for iPhone development, I hope I get to use it in the real world soon.

Monday, March 16, 2009

New Project

I started a new project last week and I'm really enjoying it. The unbelievable part is that the application is for the iPhone, which is basically a dream come true for me, however thus far I've only been working on the backend.

Not that I'm complaining, as a developer it is a wonderful feeling building something from scratch. In this case I'm creating REST Web Services using Java, and of course I'm using the sexy tools like Maven, Spring, and Hibernate (well they were sexy five years ago, by now they're pretty much just standards). We're embracing the "cloud" by deploying on Amazon's EC2 platform, which makes a lot of sense for any small to medium sized tech project.

On the advice of a friend I downloaded the Google App Engine and played around with it for a couple of hours and I was really impressed with how quickly I could get an app working in a short period of time. I have very little experience with dynamic languages and Python felt a little odd to me, but it didn't take long to appreciate how easy it makes many programming tasks.

Building a well designed Java application takes some time, even for someone like me who has done it many times. I'm wondering how long it would have taken to get something similar going with App Engine and if the end result would have been any better or worse.

It's hard to say, but someday I hope to give it a shot just to have the comparable experience. Doing something you've done before is nice because you know how to get the boring stuff done quickly and how to avoid the gotchas, plus it makes hitting deadlines far less stressful, but doing something new can also be rewarding because it's challenging. I didn't choose a tech career because I'm afraid of doing new things.

Tuesday, March 10, 2009

My Hot Unibody

When I bought my MacBook Pro in late 2006, it was a little hard to justify because my Powerbook was only a year and a half old. However I really wanted one because I was taking a job with a consulting company and wanted to work on a Mac instead of a company issued PC and the new Intel-based MacBook Pros could run Windows when I needed it. After making my purchase, I told myself I would try to keep it for about three years.

I didn't quite make it.

I am typing this on my new unibody MacBook Pro, which I've owned for about a week now. I did my best to be frugal, I bought it off of Craig's List for $500 off of the list price and it was only 4 weeks used, plus I sold my old one for $1,200.

My rational this time around was similar to my rational two and a half years ago, my old laptop would run Windows in a virtual machine, but I struggled to run other apps at the same time due to the amount of memory I was giving the VM. This new machine has four gigabytes of RAM and it has made a huge difference.

Of course the new unibodies have other interesting features. The LED backlit screen feels much more vibrant and the keyboard is much nicer to type on. Also, it's the little things like the magnetic latch and the solid feel of the construction.

The biggest adjustment for me has been the new trackpad. The glass surface does glide a little smoother and it's nice to have the larger tracking surface, but there's no button. Of course the entire pad itself is now a button, and originally I tried to push it for clicks, but it's nosier than the old button and feels clunkier, so I'm trying to get by with tapping on the pad without pushing down instead, which is how I'm guessing this trackpad is meant to be used.

I'm still getting used to how dragging is done, where you tap and hold to drag, then tap again to release. It's a little slower than the conventional way, but it feels better and is probably helps me avoid an RSI.

Using this new method for clicking, plus the gestures for zooming, navigating back and forth, and Expose, evokes the feel of a different interface, that of the iPhone. While most smartphone makers are adding physical buttons to their devices so that they will feel more like your computer, Apple is removing buttons from their computers to make them feel more like iPhones. I don't know whose strategy will win out in the end, but it isn't hard to guess who I'm rooting for.

So far I'm really enjoying my new toy, right now it is the hot new thing... at least until a newer, younger model comes along.