Your browser (Internet Explorer 6) is out of date. It has known security flaws and may not display all features of this and other websites. Learn how to update your browser.
X
Post

Please Don’t Require Login

I write iPhone apps for a living. I have a regular job with regular people, working for a small startup in Ottawa. One thing we discovered is that requiring a user to log in is a barrier to entry. We needed users to create accounts and log in so that they could answer surveys, and we would know if they’d answered them before. (Using accounts wasn’t required for app use, but it was required to use certain parts of our apps.) But people didn’t like creating accounts and logging in, so we transformed our system to make it so that users didn’t have to log in. We just logged them in anonymously instead.

Frankly, I wasn’t surprised. I download a fair number of apps every month. When an app wants me to log in, that’s strike one. If an app requires that I create an account and log in before I can do anything at all, that’s strike two and strike three. (Unless, of course, it’s obvious why an account is needed for the functionality of the app.)

That’s the situation I found myself in when I downloaded the ItSpot shopping app. It’s an app that helps me find shopping deals in the city I live in. Cool. It requires logging in with an account. Not cool. I deleted the app. I don’t see a correspondence between shopping deals and creating an account. It already asked for my location, which I gave it. It made sense to require a location, because this app gives me shopping deals based upon it. But then it required that I create an account or log in with Facebook, and that’s where it lost me. Sorry ItSpot dudes, I wanted to help you guys by using your app. But you just made it too annoying.

Post

Oh No He Didn’t! Google’s Schmidt on Innovation

Here’s a classic one by Google’s Eric Schmidt:

However, patent lawsuits brought to the table by Oracle, Microsoft and Apple could potentially halt Android’s momentum, considering phonemakers might have to pay licensing fees to use the OS depending on the outcome of these cases. Quizzed on the issue, Schmidt replied that this “legal fun” stems from its successes.

“We have seen an explosion of Android devices entering the market and, because of our successes, competitors are responding with lawsuits as they cannot respond through innovations,” he said. “I’m not too worried about this.”

Considering that the Android operating system is a poor clone of iOS, I find this statement somewhat ironic, but completely laughable. Remember that pool of patents from Nortel and Apple, Microsoft, and RIM recently got their hands on? I seem to remember Google being in the running for those, but were beat. Google: what’s your stance here? Do you innovate, or buy others’ innovations?

Post

Apple Makes Lots of Money

Apple announced yesterday that they made tons of money. They didn’t use those words, but I wouldn’t blame them if they did.

Some salient facts:

  • Apple posted record quarterly revenue of $28.57 billion.
  • Apple posted a quarterly net profit of $7.31 billion, or $7.79 per diluted share.
  • Apple sold 20.34 million iPhones in the quarter.
  • Apple sold 9.25 million iPads during the quarter.
  • Apple sold 3.95 million Macs during the quarter.

Apple 19jul11 Earnings Press Release

Post

Google+ Now Available for iPhone

My friend sent me an invite to Google+ shortly after the service started, and I’ve been using it ever since. I love the concept of circles and sharing things with only certain people, but there is a real problem with noise. It seems much harder to find the good stuff in my Google+ stream versus my Twitter stream.

No matter, the iPhone app for Google+ is now available, but living in Canada, I couldn’t find it from the app store on my iPhone. I had to download it via iTunes, and then sync my iPhone to my Mac.

What’s it like? I am afraid to say that the experience isn’t that great. The app is slow and buggy. It uses a non-standard tab control across the bottom for no apparent reason. It’s a weird little app that doesn’t seem to have much polish. Frankly, it feels like an Android app.

Post

Early Days Ad Revenue

iBorrow (IOU) Lite is an ad supported version of the iBorrow (IOU) app. I haven’t had that many downloads, but I still decided to take a gander at the ad revenue it’s generating. I never expected much, but the ads’ eCPM is truly terrible. I am currently using two ad networks, and here are the numbers:

AdNetwork 1:

Ad Requests: 323
Ad Impressions: 157
Clicks: 0
CTR: 0%

AdNetwork 2:

Ad Requests: 966
Ad Impressions: 778
Clicks: 2
CTR: 0.26%

My total revenue so far has been $0.18. This is not encouraging.

Post

The Samsung Nexus S

I work full time as a mobile developer. In that capacity I was given a Samsung Nexus S yesterday to help me with my Android work. It replaces a cheap little Android that works about as well as a rock with buttons. So this is my first experience with a “real” Android phone, and I have to admit that there are lots of thing I like about it.

The Good

  1. Back Button
    The Back button is awesome! No more putting soft Back buttons everywhere like on iPhone apps. And it doesn’t work just within an app, but also between apps. So if your apps kicks out to the YouTube app to display a video, and you hit the Back button, you go back to your app. I think this is the single best thing about the Android over the iPhone.
  2. Notifications
    Wow! Just swipe down from the top and see a list of notifications. Touch one and it brings you to the app. Marvelous.
  3. Dynamic Themes
    I know it’s a silly thing, but I really like the dynamic themes.
  4. Widgets!
    It took me a while to figure out how to install widgets, but I finally did it. I like ‘em!

The Bad

  1. Gmail Inbox
    When I am viewing an email and there’s a little button at the top left that says “Inbox”, why does it not take me to the inbox? I touched that thing thirty seven times, and it didn’t work once.
  2. Menus
    There’s a dedicated menu button on the phone. I don’t like it. It means that I have to look two places to find the functionality I want, one of which is hidden.
  3. Ugly Apps
    I miss the nice iPhone apps. They are just so more functional and polished on the iPhone.
  4. Inconsistencies?
    I put a question mark because I’m not sure if it’s inconsistency or what. The problem I’m having is that I just get confused. I have to do a lot more figuring out than I ever had to do on my iPhone.
  5. Lack of Polish
    I guess this is to be expected of anyone whose company name doesn’t begin with “A” and end with “pple”. But the Android GUI just doesn’t look as nice and doesn’t feel as nice as the iPhone GUI.

That’s what I think after less than a day of use. We’ll see how I feel later!

Post

App Approved!

My latest app has been approved! Now I’m just putting the finishing touches on the website, and I’ll be sending out some press releases soon. This is an exciting time that’s also filled with a little trepidation.

I’ve never been that strong at web design, and the page for my app on this site is severely lacking. On top of that, everyone talks about how important marketing is, but they always seem to start with the premise that you know people. I don’t know people. I know nobody. But I’m going to try to do some marketing anyway, and we’ll see how that goes.

Post

iBorrow (IOU)

Available Soon!

Never lose track of the things or money that you’ve borrowed from others or that they’ve lent to you. This app lets you choose contacts or manually add people. Then you can track what you’ve lent to that person or borrowed. Adding dollar amounts is easy! Any number you enter is automatically converted to currency. If you return a something which is a currency, you can choose to pay back only a portion. Not only that, but you can do it in style, with four different themes to choose from.

Post

Motivation : Lacking

I just read an article over at Funky Visions about motivation. Why bother polishing an app to the n’th degree if it seems like it won’t make a difference?

I can totally relate.

I’m working on my latest app, and I’m getting close to done. I just need to fix a few bugs, maybe add a small feature or two, and get better icons for it. At this stage of the app creation process I tend to drag my heals. What if I release this app onto the store and nobody notices? What if it sells as well as my last app (very poorly)? Sometimes I think I’m better off not releasing the app at all versus being faced with disappointment when the app fails to impress.

I can’t say that I’ve found a solution. I’m trying to polish this app a bit better than the last one. I’ve got a cool new skinning feature that lets the user decide the colour scheme of the app. I’ve just added Bump functionality so that users can share data with other users. I’m in the process of hiring an artist to do some work that I did myself in the last app. At the end of the day, though, I can’t say I’m any more comfortable releasing this app into the wild than my previous app. I’m still trepidatious and don’t want to face the disappointment.

The biggest remaining problem is that I’m not a marketing guy. I see lots of articles about how not to market your app. And how releasing an app without a marketing push behind it is suicide. I’m still trying to figure this stuff out. Lots of the advice I see out there is for people who already have contacts. Who can already send out a tweet and have thousands of people read it. But I’m a nobody. Nobody reads my stuff. It’s hard coming up with a plan. Hopefully for this next app it’ll have some better coverage. I’ll have to see.

Post

Pattern for Loading Table Data

I gave this pattern to a coworker of mine the other day, and they thought it was quite helpful. Starting iPhone develops may be just getting used to how things work on the iPhone, so I thought I’d point out a good way to load a lot of data into a table view.

- (void) finishStartup
{
// this must be done on main thread
// stop spinner here using self.view
[mTableView reloadData];
}

- (void) startup
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

// load the data here

[pool release];

[self performSelectorOnMainThread:@selector(finishStartup) withObject:nil waitUntilDone:NO];
}

- (void)viewDidLoad {
[super viewDidLoad];
// start spinner here using self.view
[self performSelectorInBackground:@selector(startup) withObject:nil];
}

You have to remember that GUI stuff like starting and stopping spinners and reloading the table view have to be done on the main thread.

You can’t just do something like this:

- (void)viewDidLoad {
[super viewDidLoad];
// start spinner here using self.view
// load data
// stop spinner
[mTableView reloadData];
}

Why? Because the spinner never gets a chance to be processed and shown. That’s a general pattern whenever you want to show the spinner. You have to start it in the main thread and do your processing independently.