Beginning iOS class at MacWorld/iWorld

This year’s class was taught by the students and teachers from Canberra Grammar School’s Code Cadets. This is based on their 10 year class at the school where the actually teach their students how to develop a class. The structure of the class teaches not only the basics of iOS, but also a structure of how you program. I find that many classes tell us about how to write for a platform a do a poor job of explaining how to think like a programmer.

The structure of the class was setup into two sections:
1) Introduction to Objective-C
2) Introduction to iOS Development

During the Objective-C section, our instructor went the basics. Comments,code structure, variables, if’s and loops. Expression evaluation was also covered. I’ve seen many classes skip this, which causes a lot of basic programming mistakes early on. The approach they use was to have very simple assignments (both on paper and inside of xCode) to reinforce the learning projects. Nicely done.

I also learned that a habit I’ve been following for twenty years is called Camel Case. I must have learned that years ago, when I was learning Pascal. Cool! The other major AHA! moment from the class was the “fizz-buzz” test. Evidently this will easily weed out people who don’t understand programming, and so many people who apply for programming jobs, can’t program! Amazing!!!

We then got into Object-Oriented Programming. There were four major classes that were explained to the class: NSNumber, NSString, NSArray, and NSDictionary. Another learning point for me, NS prefix is from NextStep! You now know that you can figure out where Apple got various class libraries. (Well sorta).

The overall class was great, but as a one day class, and with as many people as there were in the room, we barely scratched the surface of iOS programming. The good part was that each attendee got a book with all the exercises, and there will shortly be a dropbox location for all the sample code. I had a great time, and meet some cool people throughout the day.

A shout out to my lunch and dinner friends!

What version of Android should you support?

During today’s flight to MacWorld/iWorld the Boeing 757 I was on, had to reboot their in flight entertainment system multiple times. These planes have been in service for some time. But the seats look to have been updated within the last 5 or so. I wasn’t surprised to see the Linux penguin during the boot sequence. As a matter of fact, a friend of mine has been leading the development team for one plane which recently rolled out to their customers, and they are using Android for their inflight entertainment system. The part that is surprising is that they are using Android 2.2 for their operating system. It seems that in some of these embedded systems they are not as current as the latest mobile phone.

This all got me thinking, for android apps, do you go for the largest potential customers, knowing that you will be 2-3 years out of date on operating system features? Or do you go for the new and cool features, knowing that you will have the potential for longer life for your app?

Yearly Sojourn

Well it’s almost here… My yearly sojourn to San Francisco to geek out with Mac and iOS users. This year, I decided to focus on iOS development while I am there, and am taking a full day intro class on iOS programming. You may ask, why take an intro class? I like to understand what people are learning, as they get started in programming. I’ve been coding iOS for three years now, and always learn something new when I see how others are learning. People starting by learning iOS6 get a completely different perspective than those of use who have been coding since iOS3.x.

While I am out there, I am also looking forward to catching up with friends and acquaintance from over the years. If you are planning on heading out, drop me a comment or tweet and let’s meet up for a beer or a coffee.

The two thoughts of DevOps

I was able to make the local Triangle DevOps meetup this week. The topic was how local email marketing company, Bronoto, has evolved their deployment processes over the last few years to address their incredible growth. Listening to Doug Hairfield talk about how the system admin team has changed from managing their production hardware as hardware to managing it like code, was very much an ops centric view of DevOps. Doug talked about how the ops team had learned a lot from the way the development team was managing their code, using SCM, testing and validating their configurations. Very cool presentation.

Many people I work with think about DevOps from a development self service method. This comes from a cloud centric view of the world, but Bronto still has a physical infrastructure to management. When you come the cloud/developer perspective you also get to the idea of infrastructure as code, but it reflects the developer centric view of the world. Get it done, and get I done fast so you can get onto the next cool thing. The ops centric view of the world is about getting it done right and making sure that it is repeatable.

When I think about DevOps, I come at it from a business perspective. To me DevOps is how you provide the business with the functionality with more capabilities, as fast as possible, with the least amount of risk. To that end, we need to have both Dev and Ops focus on the business reasons, and address their piece of DevOps with the basic goal of low risk/high velocity Busines change.

Upcoming activities

So, what have I been up to lately? Shortly after my last blog entry I got sick. Very sick. The kind of sick that you basically lay around for two or more weeks, and can’t even think straight enough to read. What a pain. The good news is, that’s over now. The other news is, I also perform light opera in my spare time, and have been cast in a local performance of Pirates of Penzance. Come see the show in march – . January is also the month that I go to what used to be called Macworld Expo. So I will probably be pretty quiet on the blog for a bit.

So this has given me time to start thinking about how to get more engagement on this site. This is tough, since I post an entry when I have something to say. I don’t post just to drive traffic… But I want to have a dialog with other developers locally. So the question that comes to my mind is, what do you think the largest challenge is to get your app the viability that it deserves?