For the second year the annual CSTA Conference has had a mobile phone development “throwdown.” In this session each participant has 15 minutes to create a mobile phone app. We had someone developing in Objective C for iOS (iPhone), App Inventor for Android, and Visual Studio for Windows Phone. I recorded a version of my Windows Phone demo at Windows Phone Random Dialer Demo. I believe the whole session was taped and I’ll update this post with a link to that when it is available. But this post is about what I have learned and some opinions I have developed from watching the “other guys.”
Update: A video of the live session from the CSTA conference including the iOS and App Inventor for Android development is available at http://youtu.be/AD7PRDmYfaQ
Ralph Morelli(Android), Adam Howitt (iOS), Alfred Thompson (Windows)Picture by Peter Beens
The first thing I have learned is that I have no real interest in using iOS development in my classroom. If I were in the app development business I would probably go though the pain to learn it but since I’m not I will not. Objective C seems a little on the weird side to me. And I am probably spoiled by Visual Studio but attaching code to events and objects seems a lot easier in Visual Studio (and App Inventor for that matter) than in iOS development. I want something easier and smoother for teaching.
App Inventor is cool. No two ways about it. It’s fast, easy, graphical and there is a lot of good access to phone features. It’s not “real code” though to me. I have mixed feelings about that. I would love to see how the professionals develop for Android. In the demo at CSTA the presenter did have to go into Java tools to get access so random contacts in the contact list because App Inventor didn’t have a native way to do it. That was done hurriedly with a bit of “I prepared this earlier” so it wasn’t clear to me how it all fit together. Some of that was of course because of the severe time constraint.
I can see using App Inventor in some ways in a first course. In a more advanced course I was more traditional code.
Visual Studio is, in my admittedly somewhat biased view, just right in the middle between the drag and drop of App Inventor and the complicated Objective C of iOS development. It also has the advantage that the same languages (C# as I used in this demo or Visual Basic) that are used in more traditional programming as also used for phone development. I like that.
An addition to the mix for me is TouchDevelop. It is somewhat similar to App Inventor in that syntax is largely taken out of the mix. It doesn’t have quite the same drag and drop user interface ability that either App Inventor, Visual Studio or even the iOS tools have though. On the other hand it allows the user to export to Windows Phone, Windows 8 or web apps. That’s cool!
It is also very easy to get access to phone specific functions. Take a look at this code that displays information about all the contacts on my phone.
And that is with some error handling to watch out for contacts without phone or email addresses. As TouchDevelop continues to improve that may be the way I do things if we do another ThrowDown in the future.
Something else I learned is that different platforms allow (or not) different things to coders. For example it is easy to get information (meta data) about phone messages or texts in Android. Not so easy at all in Windows Phone. On the other hand in Windows Phone development one is able to easily access random contacts while on Android (especially with App Inventor) some hoops have to be jumped though. There was also a lot of “set up” required in iOS development that neither App Inventor nor Visual Studio or TouchDevelop had to go though. So you have to do some homework to make sure your app is even possible on a platform.