Glenn Stephens
Musings on Mobile, BPM, AJAX and design

I’ve done particularly well with my App Store submissions. I’ve only received one rejection and that was really due to Apple not liking the subscription model I’ve used. That wasn’t a hassle as the change was relatively easy to correct.

But right now I’ve got an App that I’m nearly at the point of submission that might just get rejected. I’ve developed counter arguments for all the things Apple may request, but its definatly in the Gray Area as if Apple will allow it or not. I’ll submit the App in the next two weeks, but keep you updated. If it gets rejected then I’m not really fussed as I use it as a personal tool, but I am hopeful that it will get accepted.

I’ll fill you in the details as it gets closer. I’d be curious to hear from anyone who has played in the area of App submission.

I’m wondering how much Windows work I should be doing. Many of the solutions that I work on tend to be very end-to-end, that is there is a combination of clients and server code. The clients are migrating more towards web and mobile. Most of the server side work I do is either C# or Delphi which are great platforms for server-based system and it often just depends on what I am integrating with. I can probably still do this work within a VM, but it is worthwhile knowing.

But many of my projects are green-field ones where I get to pick the technology stack and more and more I am thinking about moving away from Windows as a development tool, mainly because I am becoming overly frustrated with the baggage that comes along with it. I’m writing this at the moment while my computer restarts because some shitty update tool decided that it should restart the computer while I was in the next room because it thinks that an update to its software is more important than what I think my computer should be doing at that given time. I just don’t get this garbage on a Mac. I get time working getting into flow – that is good.

These things are not isolated. I get crashes, excessive update requests for software and virus software blocking legitimate activity and having to mess around with these things.

Another thing is that the laptops that I tend to get don’t last either. My Dell at the moment only lasts for about 50 minutes on a charge and that is with Battery Saving options all set to maximise time. I think I enjoy the Mac more because I can take it with me for a day without having to charge it more. Its more productive if I can work for 6-7 hours on a charge rather than 1-1.5 hours, especially if I can’t find a power point.

I’m not a zealot, and I’m not tied to one camp that X is better than Y. For me these things are discussions that don’t lead to anywhere positive. Its like Language or Cola wars; They are an opinion and an opinion that is valid for you. Just expressing my frustration because I think there are many of us who have similar issues.

 

An interesting question I get asked a lot by people is “Should I write for iPhone or Android?”. Twelve months ago my advice was to target iPhone first and then target the Android platform if you are making a consumer app. The main reason I had was purely the fact that every now and again I would ask people how many apps they would buy or download.

For Android users the answer was typically that they would not download many apps at all and if they did they would download free ones only. iPhone/iPad users on the other hand would answer that they would spend money on apps more frequently and it wasn’t a bother. Most apps are considered coffee money for iPhone/iPad users so you can make a trivial purchase. After speaking with a collegue who runs a similar business to me on a flight to the US a couple of years ago he mentioned that he noticed an interesting trend in mobile purchasing which was similar to the following:

  • iPad users are normally willing to pay a premium for an app
  • iPhone users will tend to pay, but will want to pay less
  • iTouch users don’t tend to pay as much as they are normally kids

So it was interesting to see this article that validated some of my thinking along these lines.

CHART OF THE DAY: iOS Users Earn More And Spend More Than Those On Android
Read more: http://www.businessinsider.com/chart-of-the-day-ios-android-spenders-2013-1#ixzz2HZksp0RA

Not only do iOS users spend more on apps, they typically make more money as well. This validates another assumption I had is that Android use was not always intentional and that people are buying these devices because these are the default phones. My wife for example used a Sony Expedia Mini for two years because it was a phone. She didn’t like the phone, but when I upgraded my iPhone she got my old phone (although I confiscate it for testing when needed) and she does far more on the iPhone than she ever did on the Android. Android still has a long way to go to truly get to the ease of use that Android has. Many people are saying that it is getting better, but these people tend to be technical people. For non-technical folk its only getting a little better. One of the fundamental reasons that iPhone was so successful is that it created a market segment of people who will use this technology but don’t want to touch a computer. New people who didn’t want to connect before are connecting and liking it.

So to answer the question, I would target iPhone first, generate some money and then target Android. I’ve just done an app with this flow (iPhone then Android) and it has worked quite well. Because of the methodology I use I was able to port the Android version of the App to iPhone within a couple of weeks.

I‘ve had an interesting last week. After doing some work to tweak an apps implementation, I’ve begun work on the Android port of the same app. Much of my Android work has been data apps for internal clients, but this one requires a bit more finesse.

If you design an app using the stock-standard controls for iOS, you actually end up with a pretty decent looking app. It won’t be art in the traditional sense, but it will work, people will look at it go ‘thats fine – I can use that’. Android on the other hand looks like it was drawn with a paper stencil. There is a lot of work to get it to look good.

Some days to finish an app, coding is not the answer, Photoshop is.

I’ve discussed this in some of my talks, but app reviews are crazy things. People can be so polarised in their views. For example, one of the Apps I really like is Sparrow the email app for iOS. Its well designed and elegant, but I’ve seen someone give it one star because it didn’t support the iPhones larger screen. They were completely dismissing the aspects that the app delivers a very efficient way of checking email.

I’ve seen this with my own apps where people trivialise things also. I’ve had five star reviews for my apps and then one star reviews for something my app didn’t have. I can see now why actors don’t read their own reviews. For me I’ll read the reviews when I schedule the app to be updated as it does affect you. If there is truly something wrong with the app people let you know.

Check out the Comments section of the following oatmeal cartoon and you’ll see what I mean.

http://theoatmeal.com/comics/making_things

The review process for the devices really changes the way you have conversations with your customers.

This certainly validates my assumptions. The US has always been the largest downloader of my apps.

A great article titled “iOS v Android: app revenues, downloads and country breakdowns”

http://m.guardian.co.uk/technology/appsblog/2012/dec/04/ios-android-revenues-downloads-country

With the recent announcement of the iPad mini, I’ve been assessing what are my requirements for devices. Most of my time these days involves working on mobile applications for iPhone and Android and the corresponding servers that communicate with those devices.

The servers are easy enough to control, but find myself needing a larger number of old test devices. Just last week I spent a few hours travelling just so I could pick up an 2nd gen iPod touch which had iOS 4 on it so I could test that platform. At least now I have one of each iOS platform to test with, so getting these test devices is important for backward compatability.

The other aspect is that the iOS platform changes, so you need to know which calls to make for particular versions of an OS so it will work. For example calling a AddChildViewController on a UITabBarController will work on iOS 5 and above, but not on iOS 4. I’ve found that the best strategy for this is to find (e)books that are on the development platform, but are released and written before the platform is updated.  In this way you will be able to apply the techniques of old to get your new app working with more devices.

This last tip has helped me out with some backward compatibility issues I’ve been having.

Just in case you missed the Embarcadero announcement, I am very happy to be a part of the Embarcadero MVP program. I’ve been a user of their tools for quite a long time and its a great part of my toolkit and am delighted to be part of the program along with so many others.

Nick Hodges recently had a post on FizzBuzz (http://www.nickhodges.com/post/Fun-Code-5.aspx) as an interview question. It dawned on me one of the strategies that I use in my interviews which is a very small filter question to weed out developers who really I don’t think have the thought processes to develop. In summary the question normally looks like this in Delphi:

procedure PutOperation1(n1: double, n2: string, answer: integer)

begin

answer = StrToIntDef(n1 + n2)

end

I want to be clear. This function is wrong in so many ways but thats its core purposes. Its amazing how many how many people don’t know how to think about a thing as simple as a function.

The things that this picks up is:

1. One of the other thing you might get is someone who just doesn’t know the language. It is quite common for someone to apply for a job that knows programming, but doesn’t know the language. This test will filter those people out. Its amazing how things like Semicolons, := and other things are there to trip people up.

2. That they should understand the calling conventions

3. That they should understand how to convert between data types

4. That it should be function and that having it as a procedure is bad form.

5. That the procedure should be named appropriatly; or

6. That people should expect to know what it is supposed to do when they look at the function and then realise that the whole purpose of the function is to add two numbers. A smart person will say that it serves no purpose and you should just add the values from where you are. They may ask whats the point and thats a good sign.

A suprisingly simple test, but its amazing how many people it clears out. You then have other questions on a range of topics from testing, refactoring, OOP and then platform specific issues and a slew of others, but its an interesting point I thought I’d share.

I have C# versions of this that I use, but its amazing how something simple can get to the point.

Interesting enough, I came across an article on Slashdot that talked about using the iPad for development work. An interesting enough discussion so I thought I would take a look to see if it can be practically done. Certainly my trusty iPad has done some amazing things in the past for a portable device, so why not this?

I’ll confess that I have actually used my iPhone in the past to code HTML and JavaScript and haven’t had an issue with it (I’ve used jsAnywhere and mainly textTastic). I’ve sat down at a restaurant while listening to some live music while coding away HTML and Javascript on the phone.

Interestingly enough I even purchased a product called Codea. Codea is a Lua IDE for the iPad that I have been toying with just as a way to show my son how he might want to write games. Certainly the tool is useful from that aspect, and as an IDE is does a more than reasonable job, especially with their team size (Go Australian Software).

I’m not hassling the tool itself. I think if I was a Lua developer I would find it gol. I think the reason I am able to get HTML and Javascript done on an IDE is due to the fact that I have done enough of it in my lifetime that it is committed to memory. I can use it as a way of writing out ideas, like a scratchpad until I’m back at a desk where I can finish the work.

I think for languages and projects where you need to reference other information it is extremely difficult. Having access to databases, web services, books etc it becomes more difficult as development can be often about referencing the right set of information to map out information, to read ebooks to cover gaps in your knowledge and all these sorts of things.

I think it can be done to a larger extent and I would like to see IDEs like Delphi and Visual Studio (or MonoDevelop) ported to mobile devices so we can develop on these platforms. That would be interesting to see. Just a tool to write some code, test it and shift it over to a real tool to do the main work on is quite a handy situation. I wonder how soon we will see that?