Author Archives: Jjxtra

What Makes a Great Mobile App?

I got a review recently on You Doodle where a user was frustrated that picking a picture frame overwrote a Chibi that they had been working on for several hours. Currently in You Doodle if you pick a picture frame, it overwrites your image, even if you tap cancel. In hindsight, this was a poor decision on my part. Today I changed You Doodle to restore the previous drawing in the event that the picture frame tool is cancelled.

This got me thinking about what makes a great mobile app. You Doodle certainly isn’t perfect and has some excellent qualities but since it’s my first real mobile app that’s been used by hundreds of thousands of users, I have also seen it’s flaws.

I’ve been looking through the top apps in the Apple app store and drawing on my experience working on the Ancestry.com iOS app and I have come up with a list of qualities that define a great mobile app (and some qualities that absolutely will annoy or cause users to delete the app).

Qualities of a Great Mobile App

The app should launch quickly

Every time a user starts your app and they have to wait that adds a small negative vibe and tiny frustration that can build over time. Lazy load everything you can after the app starts. Even with all the caching and initializing that You Doodle does, it usually launches in 2-3 seconds on my iPhone 4S and 1-2 seconds on my iPad 3. I tried Adobe Photo Shop Touch and it took nearly 10 seconds to launch on my iPhone 4S, so I am feeling reasonably good about You Doodle’s launch time.

Provide an intuitive start view

Once the user has launched your app, provide a simple and clear view of what they can do next in the app. Some apps use on screen guidance, others have a few simple buttons. Don’t overwhelm the user at this point with too many buttons or views or they will get confused and delete the app. In You Doodle, we send the user right to a canvas where they can immediately use their finger to start drawing. A few simple buttons at the bottom of the screen allow the user to use additional tools.
photo

Do ONE thing and do that thing WELL

Your app should focus on one specific thing (tracking receipts, playing music, sending messages, whatever that thing is). You Doodle has morphed into an all in one drawing, filter and clipart app. In hindsight, I think this has overwhelmed some users and confused others. Is You Doodle a fun kids drawing app? Is it a professional photo editor? Maybe both?

Do not clear a users work unless you prompt first

If any action in your app will result in the loss of a users work at the click of a button, you should prompt them and ask if they want to save their work first. We made the mistake in You Doodle of overwriting a users drawing when they choose a picture frame and then when they cancel the picture frame, it would reset to a blank drawing. Oops.

Test, test, test

With every You Doodle release, I go through every element in the app and make sure it is still functional. On any major release I have always found a user interface element that broke or changed behavior because of a code change. Any broken user interface element or crash will turn off your users and send them looking for a new app.

Most users don’t care about you or your app

You and your company have spent countless hours working and polishing your precious app. Your code is an amazing example of flawless architecture. Guess what? Your user’s don’t care. They only see the app. Your app is a tool for them and they are quite happy to use a different app. They care about themselves and how your app helps them as a utility or for entertainment. 99% of your users will never give you feedback. For every 5000 downloads we get on You Doodle, we get probably 1-2 user reviews. The really amazing and great apps break this pattern and cause the users to fall in love with the app and/or become addicted to the app.

Prefer simple user interface and function over beautiful

Every app description these days over uses the word beautiful. Does beautiful = downloads = $$$$? Maybe, but in my experience, a user prefers a fast simple app that does exactly what they want. Eye candy in my experience usually gets in the way. The obvious exception is a game where the graphics are everything. But for a non-game app, I could care less how fancy the animations are or how beautiful the texturing is on the user interface. Having said all that, try and avoid developer art and have a consistent look, feel and theme to your app so that it looks professional.

Provide options for purchase

Most users are not willing to buy things. For every 1000 downloads of You Doodle, we make maybe 10-15 dollars. That ends up being about 1 in 100 users buying something. The other users just want a free app that lets them do image editing. To solve this problem, we made three versions of You Doodle: You Doodle Pro (paid version), You Doodle (free version with in app purchase) and You Doodle Plus (free version, all features unlocked, with advertisements). Give the user some options. Most companies will provide a paid version and a lite version, but I really like what we’ve done with the 3rd advertising supported version.

Great software takes a lot of time

You won’t create a smash hit app overnight. I’ve spent close to 1000 hours on You Doodle and I would consider it a maybe a slightly above average drawing app now. I’ve learned a lot, but there have been many late nights debugging and polishing. Expect to spend countless hours on your app or managing the team creating your app.

What to avoid

To wrap up I’ll leave you with a list of no-no’s that will really irritate your users and cause them to delete the app.

  • Any user interface element that does not behave as expected
  • Overwriting a users work without their explicit permission
  • Crashes
  • Poor performance
  • Excessive startup time
  • User interface is too complicated
  • Too many advertisements or popups – use sparingly!

Thank you for reading, and best of luck to you and your app.

Playing around with Apple’s App Store Data and NoSQL Databases and Some Random Fun Facts

I’ve been playing around with Apple’s App Store Data (Enterprise Feed) and initially tried dumping it into RavenDB. I like the idea of a Lucene powered NoSQL database but after about 5 hours I decided to punt on RavenDB for a couple of reasons.

- The RavenDB administration user interface was not intuitive to me
- RavenDB costs 999$ to use

The C# API to RavenDB was fine, but it did seem slow to insert all the data.

So I settled on MongoDB which did a marvelous job of inserting. I found a 3rd party GUI Tool called MongoVUE that seems decent enough although it costs money after two weeks. The first thing I did was find You Doodle in the App Store data and it was there safe and sound. Then I thought “What is the largest app in the Apple App Store?”…

Drum roll…

Answer: The Witcher 2: Assassins of Kings Enhanced Edition

Comes in at a whopping 21,040,027,421 bytes (that’s about 21GB – yikes, hope you have an iPad 3 or 4 with 64 or 128 GB :) )

And the smallest tiniest app…

Well that depends. If you throw out all the zeroes then it is…

HiCon Lite at a measly 16,623 bytes. I was skeptical so I downloaded it. Before I could blink it was ready to open on my device. This cute little app lets you take a photo and turns it black and white.

Anyway, I noticed a couple problems with Apple’s enterprise feed that I have notified them about.

- All the screenshots are not included
- They do not include release notes for past updates
- The app pricing is bundled with the itunes music and collection pricing which requires a staggering 200GB download. I wish that it was a separate file.
- The items in the data files are not sorted on primary key which required me to merge sort each file on the primary key before aggregating everything together
- Keywords are not included – I know this is a sensitive issue since this is how search works in the App Store, but come on, what if I want to make a search service for App Store apps? Guess I can do title, genre and description.
- Reviews are not included

It’s nice that they provide the data but it’s obviously some neglected process that isn’t given much love. Even the documentation on Apple’s website doesn’t match what’s in the files in some cases.

Perhaps I will post some more interesting tidbits once I get around to it.

Props to Amazon Customer Service

On February 1st I ordered a Crucial M4 512 GB solid state drive from Amazon Warehouse Deals. The drive arrived a couple days later and sat in my office for two months unopened. Tonight I decided I needed to get it installed and so I opened it up, stuck it in my computer and turned it on. Once I got into Windows I went to the disk manager to format this drive. To my astonishment I was looking at a Corsair solid state drive of 128 GB. I pulled out the drive and checked the labels. They identified the drive as a Crucial M4 512 GB drive, but the hardware interface does not lie, this is indeed a Corsair 128 GB solid state drive.

Amazon has a 30 day return policy but I figured what the heck, let’s see what they say. I called them and explained that someone had put a false label on the drive and that it was not what I ordered. Initially the lady on the phone pointed out the 30 day return policy, but then said let me put you on hold and see what I can do. Two minutes later she came back and said that return labels had been sent to my email address and that I would receive a full refund. Wow. I am impressed and thankful that they were understanding of the situation and that I am not out 340 USD for my purchase. Yes I should have tested the drive the moment I got it, but I have been crazy busy the last few months with no time to tinker with hardware.

I would definitely recommend Amazon to anyone, they are awesome. I have had similar positive experiences when dealing with their Instant Video department as well.

What not to do in Customer Service (Flickr)

I’ve enjoyed writing about my experience with tech products and decided I would keep posting my experiences (good or bad) about the tech services I am using as I try and grow Digital Ruby.

Recently I purchased a Flickr Pro account thinking that I would be able to upload and share full HD videos. I uploaded my first video and with eager anticipation loaded it on my iPad… and it was very blurry and fuzzy, definitely not HD. No problem I thought, I’ll just email them and get them to fix it. They responded with a cookie cutter email template saying all sorts of things such as use only supported video formats and so forth. I had already spent way too much time looking around on their site so all this information was useless to me.

My format was .mov (quicktime) and that was supported so finally I emailed them back saying please refund my money, your service does not work as advertised. I got an email the next morning stating that they cannot issue refunds, look at the terms and conditions, more cookie cutter garbage. I emailed back saying no problem, I will do a charge back. I haven’t heard back from them since :)

If you have a very unsatisfied customer and can’t resolve their problems, the right thing to say is “We are sorry we failed you. Here is your money back. We will try and do better in the future.” One thing that has always impressed my about Fog Creek Software is their commitment to customer service. Quote from their website:

The Fog Creek Promise – If you’re not satisfied, for any reason, within 90 days you get a full refund, period, no questions asked. We don’t want your money if you’re not amazingly happy.

I’m surprised that Yahoo’s new CEO Marissa Mayer would have such a counter productive policy on not refunding a customer who has had such a poor experience with their product. Ah well, thank goodness for charge backs.

*EDIT 2013-03-29 After initiating the charge back, they were very quick to issue the refund themselves. Pretty sad that it took that for them to initiate a refund.

My Horrifying Experience with Google AdMob

I recently put AdMob ads into my free iOS app, You Doodle Plus. While the click rates are good the ECPM is absolutely terrible. Here’s a visual to give you an idea (click through to see full size).

AdMob earnings graph

AdMob is clearly not a viable way to support an iOS app. Now let’s compare the AdMob earnings to my iAd earnings:

iAd Earnings

The eCPM in iAd is decent, about 1-2 USD, however the fill rate is horrible and the final earnings are close to what I’m making with AdMob (I added AdMob a week after I added iAd).

This begs the question, how in the world are people supporting free mobile apps with just advertising? The apps would have to go viral and get tens of thousands of downloads a day just to justify paying a developer or two and maybe a designer. Maybe that’s why a lot of advertising apps show popups every time you do anything, but what a bad user experience.

While I’m not very happy with the results of placing ads in my app, I thought “with such low eCPM, I should be able to make my own campaign and drive thousands of users to my apps!”. So I decided to run a campaign on AdMob to see if this could work. Here are the results of my campaign:

Admob campaign results

Here’s the sad summary: I paid 15$ EACH for two installs of my FREE app, You Doodle. I was completely stunned when looking at these results. I know I am not an expert marketer and I am sure my screenshots could be improved and all that but TWO installs? For a FREE app? AdMob simply does not work for generating installs and I am going to have to find other ways to get downloads of my apps.

You can’t even transfer extra unspent campaign funds without emailing Google and waiting 5-10 business days for the funds to transfer. Looks like it’s by design that money flows to Google as easy as pie, but money going AWAY from Google is tied up in some ridiculous process. I emailed Google asking that not only should those remaining funds be transferred but that I receive a full refund for all spent campaign funds because their service simply does not work. I’ll post here with the result of that email once I get a response.

In short, stay away, stay FAR away from campaigns on Google AdMob and be prepared to live off scraps if you want to make your living from showing AdMob ads.

*UPDATE* 2013-03-26 – I haven’t heard anything after 10 days, not looking good…
*UPDATE* 2013-04-07 – Still nothing and it’s been three weeks, I am floored. Google is too big to offer customer service it would appear. I turned my campaigns back on with a bid of 1 cent and will let them drain the remaining 35$ in the account. Yuck.

SSD Prices Keep Going Down

I bought another Crucial M4 hard drive from Amazon today. It’s been amazing to see how SSD prices have continued to drop over the past few years.

As of today, the 512 GB M4 had a 329$ price tag on Amazon.

Have a look for yourself:



You Doodle Plus Approved

We just released You Doodle Plus, and advertising supported version of You Doodle into the app store. This version contains all the features of the free version, unlocked and free for use. It will be interesting to see whether people like this model better than the in app purchase with no ads model.

Download You Doodle Plus Now

You Doodle Update

Well, it’s been just over six months since I shipped version 1 of You Doodle to the iOS app store. After six months, I’m getting about 3000 downloads a day and 75-100 dollars of in app purchases. So far I’ve put in about 600-800 hours (not really counting but I try and do a couple hours a day, more on the weekends). With what I’ve made so far versus my hours I think I am making about 4 dollars an hour. Not bad eh? I used to work at Burger King in high school and I made more than that.

Hopefully things will take off more as I add more features and make the app more stable and robust. I still feel like a newbie when it comes to mobile app creation and development, but I am starting to get the hang of it.

Ta ta for now…

Logging full NSException stack traces to your server

*UPDATE* I am using Crashlytics instead now and it’s awesome, go check it out!

Recently in You Doodle I discovered a couple of nasty crashes happening to users by looking in my Flurry Analytics error logs. Unfortunately flurry decides to truncate errors so you don’t get much useful out of it.

I decided I would write a logger to my own server and pass the full exception details. Here’s how I did it:

In my AppDelegate didFinishLaunching, I call this:

At the top of my AppDelegate.m file I have this function:

 

The logging to my server happens in DeviceLogRequest. Basically it does some magic and sends an http post request to a secure end point where the error details, including the full stack trace, are logged into my database for troubleshooting. You’ll still need to de-symbolicate crash addresses manually, but at least you will have the crash log!

Hopefully someone else finds this useful too!

My You Doodle Journey

I’ve spent at least 250+ hours of my life the past few months on You Doodle, a new app for iOS. I looked at all the drawing apps on the app store and realized most were filled with ads, had cluttered user interfaces and charged for features that should be free, like text and getting rid of ads. Right from the start I wanted to make the basic features free and keep ads out of the app.

Yesterday was a milestone for the app as I reached the 1,500 downloads in a day milestone. My long term goal is to get 10,000 downloads a day. To think that I am at 1,500 downloads a day after only 4 months absolutely astonishes me. People are using the app for all sorts of things such as note taking, sending photos to mechanics, highlighting text and more – in addition to the standard draw a mustache and tail on your friend. It always makes me happy when someone uses software for purposes that the original creator did not anticipate.

I don’t know how many nights I’ve been up until 1 or 2 am trying to fix a bug or polishing a feature or performance until it was top notch. “Just one more thing…” is great at an Apple reveal, not so great late at night with software bugs…

On top of this, I have a family that probably gets too often neglected AND a full time day job that I do my very best to give an honest days work to every day.

Part of me wants to just outsource everything when it’s a late nigh with a frustrating bug. I don’t want to do that ultimately. I was born to write software, and I don’t want to become just a manager. Perhaps I will outsource a Windows or Android version some day, but the app has no revenue stream – yet.

The last month I have been working on a new collage / picture frame feature that has tested my limits. A lot of complicated code has to work well together to allow the user to download a template, insert all their pictures into it and then save it or share it. Sounds simple in one sentence, but I have spent well over 50 hours on just this one feature! This will be the first in app purchase for the app and I really hope people like it enough to buy it. I think the feature is really neat.

So here’s an example of what I’ve been doing at 1 am in the morning:

You Doodle Collage

Thanks for reading, and good night…