Seven Themes for a Great iPhone App

October 30, 2009

Spent the day at Apple iPhone Tech Talk in Santa Clara.  The keynote is more like a motivational seminar.  Telling us why the iPhone App Store ecosystem is great. There are some useful nuggets such as what Apple considers to be the 7 themes for a great app:

  1. Delightful
  2. Innovative
  3. Designed
  4. Integrated
  5. Optimized
  6. Connected
  7. Localized

Then he proceeded to introduce some examples of “nice” apps in the App Store, or what I would call The World According to Apple:


iPhone Memory Management Rules-of-Thumb

October 25, 2009

This is a great document from Apple on Objective-C / iPhone memory management and the practical cookbook tips on retain/release.  I suspect that you have to be logged into Apple Developer Network website to read the document. I’ve read it a while ago and re-read it over the weekend.  You should read it from beginning to end a few times 🙂

Here are a few quick rules-of-thumb I use.

  1. If the message that gave you an object does not have “alloc”, “new”, “copy”, “retain”, you don’t have to release the object.  In other words, calls to [NSDictionary dictionaryWithContentsOfURL: …] and [NSString stringWithFormat: …] are cool.  These are convenience functions.
  2. Objects in a collection (i.e. NSDictionary, NSArray, etc.) are managed by the collection.  The implementation of the collection takes care of the retain/release.  When you release the collection itself, the implementation will release the objects in the collection.
  3. Autorelease Pools should be used sparingly – You wouldn’t need to create Autorelease Pools yourself unless you are running things in a thread you spawned.  Refer to the document.  Autorelease Pool is NOT garbage collection, it is an extension to the retain/release reference count memory management system.
  4. UI Objects loaded from NIB files use Assessor methods.  If you declare @property with (nonatomic, retain) for the IBOutlet instance variables and use @synthesize, you do not need to do anything with with retain yourself, but you do have to release them in your dealloc() method.  If you create your own UIView objects from a ViewController, you are responsible for cleaning up after yourself.
  5. Use Assessor Methods in your code.  My rules-of-thumb are:
  • Always use @property / @synthesize
  • Set values to instance variables with self.variable = …
  • Get values to instance variables with just variable. Some may question this specific rule of thumb on the basis of consistency with the rule above. I can be sway the other way, but since we use instance variables a lot more than setting instance variables, I use this rule to make my code more readable.  See following rule.
  • Be consistent.  Alternatively, although a bit more verbose, set values with [self setVariable: …] and get values with self.variable.

In iPhone OS 3.1.2 Upgrade Hell right now

October 14, 2009

I accidentally upgraded the iPod touch I use for development to iPhone OS 3.1.2.  Doh!

Now, I cannot use it with my current installation of Xcode 3.1.3 and iPhone SDK 3.0.x to develop/test with this iPod touch.  And I cannot downgrade back to 3.0.x either.  Bummer.

So I started downloading Xcode 3.1.4 with SDK 3.1.2 from and hope to do a quickie upgrade and get myself back to be productive again.  Not so fast.  The download is 2.7GB and took 1.5 hours. Then when I tried to install the Xcode upgrade, it failed.  It reports some type of checksum error.  See this:


I tried this 3 times and it failed in different places.  I used md5 to check the checksum.  The three different .dmg files came back with different checksums.   Since I don’t know what the checksum is supposed to be, all I know is that the 3 downloaded .dmg files can be all corrupted.  And I have no way of figuring out which one is the good one, or if I even have a good one at all.

I did google around to see if anyone has the same problem so I can point fingers back at Apple.  No such luck.  Looks like I’m the only person seeing this problem.  Good that I have been diligently backing up my MacBook with Time Machine.  Since the botched installs of Xcode 3.1.4 renders my Xcode installation unusable, I used Time Machine to rewind time and get a working Xcode again.

Lessons learned:

  1. Back up your development Mac with Time Machine before you upgrade Xcode.
  2. iPhone / iPod touch OS upgrades are one-way street.  Don’t believe anything else.  Make sure that you have more than one device on hand for development and testing.

Epilog: I gave up on Xcode  3.1.2 on Leopoard!  I went out to Apple Store, bought a copy of Snow Leopard, backed up my MacBook with Time Machine (Do this!  Trust me!  You won’t regret it as Snow Leopard installation will likely require that you reformat/re-partition your hard disk), upgraded to Snow Leopard, upgraded Xcode to 3.2.1.

iTunes 9: The Good and The Bad

September 12, 2009

Just downloaded and installed iTunes 9.  The iTunes Store has a new layout.

The Bad: From the App Store tab, if you just click on the tap, you see a big splash of the “featured” big name apps such as those from EA.  You have the New and Noteworthy above the fold.  The right hand side has the Top Charts starting with Paid Apps and Free Apps.  A new section named “Top Grossing” is after the Free Apps.  Wait…where are the categories.  It used to be very easy to click on a category on the left hand side sidebar.  Now that’s gone!

The Good: If you mouse over App Store tab, you’ll see a down arrow to get to a drop down menu.  Here you’ll find the categories.  Select Lifestyle.  You get back the good old Category page.  Click on Top Free Apps on the right side bar.  Now you get the list.  Wait…instead of the Top 100, you now see the Top 200!  That’s the good news because if a new app gets into the Top 200, you have a better chance of climbing up the charts because users will find you!

100,000 Apps in App Store by end of 2009?

August 14, 2009

Flurry is a mobile apps analytics company.  They provide the service for free, and a damn good one.  Their business plan appears to be get as many apps using their analytics package as possible and aggregate the apps usage data for analysis and “industry reports.”

Here’s an example. For applications using Flurry to track app usage, developer creates an App ID in Flurry.  Flurry considers this a “new construction starts” metric (similar to housing market).

Fact: Apple iPhone App Store grew from 25,000 apps in January 2009 to 65,000 apps in July 2009.

Flurry Estimates: The current month-to-month “new construction start” rate is at 30%. With some conservative adjustments, there can be more than 100,000 apps available in the App Store by the end of 2009.

What does it mean for developers? Don’t rely on serendipity discovery.  Marketing matters. Brand matters. Look at the Top 20 in many categories.

  • Lifestyle: Weber, Sports Illustrated, Zippo, eBay, Amazon, OpenTable, etc.
  • Finance: Bank of America, Wells Fargo, Chase, CNN Money, PayPal, Quicken, etc.

You either have a sizeable marketing budget, ingenious viral marketing plan, or have a well recognized brand that will catch the users attention to get the downloads.

iPhone Dev Camp 3 Weekend Recap

August 3, 2009

It was a fun weekend at iPhone Dev camp 3 at Y! Sunnyvale HQ.

iPhone Dev Camp sign

iPhone Dev Camp sign

Day 1 – Friday 7/31/09

Friday night was a nice relaxing evening with just one keynote by Chi-Hua Chien from KPCB iFund.  See my previous post for details.  His slides are posted online here. The rest of the evening was roaming around and network. Met many nice people. Hovered around Christopher Allen to see what Hackathon projects are available.  A few that interested me:

  • GetAround – Charles Du and his team of green-shirted friends looking for “rockstar programmers” with MapKit experience.
  • Chief Medical Officer – Bess Ho and Jen McCabe assembling a team to make Google Health more useful.
  • Foodspotting – Alexa & Seth wants to build a visual, dish-centric, social app for foodies.
BT spinning, Geeks Dancing, iPhones taking pictures

BT spinning, Geeks Dancing, iPhones taking pictures

BT was playing trance electronic music outside.  I was out a bit watching geeks dancing. But there are just too many flying buggers.  When they start to swim in my beer, it’s time to head back inside.

Hot dogs were served for dinner, with beer on tap (after keynote). I overheard some people who mumbled “What? Hot dogs for dinner? How lame?” I did not butt in, but at $50 for a weekend of food and fun, what do you expect? Beluga caviar and Dom Pérignon?

Day 2 – Saturday 8/1/09

Arrived bright and early at 9am.  Bagels, pastries, coffee, OJ. Lots of people already.

Slide from Andrew Stone's presentation

Slide from Andrew Stone's presentation

The morning session started late.  Sorted of expected. The Andrew Stone keynote on How  NeXT computer became the iPhone is an excellent talk about the history of NeXTStep.  I was remotely connected to the NeXT through FrameMaker‘s availability on the NeXT cube.

I finally decided to join the Foodspotting Hackathon team and forgo many of the equally interesting sessions.  The team includes Alexa & Seth Andrzejewski, Aaron Bannert, and Warren Stringer. Around 2pm, we started really talking about limiting the capabilites so we can create something that demonstrates the concept and vision within 24 hours.  Alexa got many screen mockups already. We were able to define what functionalities can be done and what the screens should be by around 4pm.

I started putting the Xcode project together as the framework and CVS it.  Aaron & Warren worked on the data model.  Alexa & Seth provided the missing graphics and whatever we need. Magic Seth walked over and helped me with the iPhone camera integration code so the Foodspotting app can launch the camera to snag photos of food.

Indian food for dinner!

Indian food for dinner!

Over yummy Indian dinner, we continue to hack away with more code and before the 10pm shutdown time, we have a version that includes taking photos, showing the MapKit view with current location, and the beginnings of the streaming photos view and loaded it on my iPod touch and Alexa’s iPhone.  We were kicked out of Y! building 10pm-ish.  I braved the crazy flying buggers in the parking lot and headed home.  A bit more hacking at home before heading to bed.

A side note: Greystripe got some interesting stuff left in the Men’s room.  I should have taken a picture. It’s in a small plastic pouch, comes in various colors, and with the tagline “Because app developers deserve protection too!” Go figure 🙂

Day 3 – Sunday 8/2/09

Bagels, Muffins, Pastries, ...

Bagels, Muffins, Pastries, ...

Back to Y! campus by 9am.  Staked out at a table near the food and coffee and continued hacking away.  Warren started integrating his MapKit Annotations and Core Data models into the UI I built (and fixing the bugs I introduced last night, thanks, man!).  Got the streaming photos working.  Got the photos zoom UI working. We kept the UI very simple so we can get the application working quickly.  And instead of pulling data off the network, all the map pin drop annotations are bundled into the application.  Alexa and Seth worked on the presentation (which was so good that it wow’ed the crowd, but none of us have seen until demo time) while constructing the data set we use to seed the application with interesting pictures and geo-locations.

Sunday lunch: tasty tacos

Sunday lunch: tasty tacos

Aaron was debugging with Warren.  Seth called for help, at Warren’s direction, from the mic on stage for various Core Data and Map Kit issues several times.  Helpful helpers showed up faster than you can say “911”. Pretty much all of us worked on the application non-stop and skipping lunch.  Seth brought us tasty tacos so none of us fainted at the keyboard.

iPhone apps is the new web site

Phone App is the new Website

We signed up online for the demo before the 1pm deadline. Completed our demo-able application on the iPhone. Completed our presentation slides. Then we relaxed and watched other Hackathon Demo presenters.

Foodspotter Hackathon Team Photo

Foodspotting Hackathon Team Photo

Then it’s our turn.  We were slightly delayed after hitting into some snag with hooking up Alexa’s MacBook Pro to the projector.  But we finally got started with the demo.  (Lesson learned: Let Mac OS X take care of video switching.  Instead of manually setting the MacBook to 1024×768 to match the projector, just leave it alone, plug the video cable in, and Mac OS X will takes care of it. If not, you lose.) The slides were great.  The demo worked perfectly.  Crowd cheered. We knew there are bugs, but we were careful enough to only do things that are “safe”.  It’s my “machéte a path through the jungle” demo philosophy at work.

Out of the corner of my eyes, I saw Robert Scoble sneaked up towards the stage and took a picture of us.  I asked him afterward what he thinks of Foodspotting application. He said he likes it!

Then comes the nail-biting time of waiting for the judging.  We just hung around talking to people and networking.  When the winners announcement comes to Best Social Applications–It’s Foodspotting!  We jumped up and down and went up to claim our loot which includes: 8GB iPod touch, Elgato H.264 HD encoder, and MobileMe family pack.  We also picked up several other small prizes with our blue “helpful” tickets. Here’s the list of all the iPDC3 Hackathon winners.

The Foodspotting team went out to Shanghai Flavor in Sunnyvale for our celebration dinner and get to know our weekend Hackathon teammates a bit more.

KPCB iFund Status Update

August 1, 2009

Chi-Hua Chien from KPCB spoke about the status of their $100M iFund at iPhone Dev Camp 3 last night.  Key points, about $45M invested.  4000 proposals, 250 companies met, etc, etc, etc, and the bottomline 7 companies funded.  The list:

  1. Pelago – 2 guys in Seattle
  2. Gogii – ex-Jamdat
  3. iControl – more like a Series B (or C?)
  4. ngmoco:)
  5. Booyah – ex-Blizzard people
  6. hush-hush mobshop – 1 guy working for about a year at KP’s office
  7. can’t tell you or I’ll have to kill you

The “biggie” categories iFund is interested in are:

  • Mobile Commerce
  • Real-Time Everywhere and Anywhere
  • Local Search
  • Healthcare – funded a company that has a real time monitoring of health signs
  • Augmented Reality
  • Real-World Gaming

And he (as well as most VCs I know) are looking for the following in any proposals:

  1. Market
  2. Team – proven team. See list of funded companies above.
  3. Technology – defensible. Patents help in the long run, but having “hard to do” technology is what helps you in the near term.
  4. Product
  5. Business Model – last but not least.  Dotcom is so 90s.

At iPhone Dev Camp 3 this weekend

July 31, 2009

About to head towards Sunnyvale Y! campus for iPhone Dev Camp 3 for the weekend.  Follow the events with #ipdc3 tag on twitter.  High hopes to learn something and meet lots of new friends.

News Flash! News Flash! appFigures Makes Pricing More Flexible

July 30, 2009

I want to claim credit, but I won’t.  I’ve been whining about appFigures being such a great service that I will consider subscribing to, but insisted on charging me a monthly fee for all apps in my iTunes Connect report regardless of which one(s) I really care about.  I’m sure that they have heard about it from other potential customers as well.

Well, they announced a few days ago that their wonderful engineering team has figured out how to let subscribers control while apps should be included.  Woohoo!  But you know what they say about software development, “Everything is possible, the Impossible just takes a little bit longer.”

What I like about appFigures

  1. Graphs with events – The sales/download graphs shows the “marketing” events you defined.  This is very useful.
  2. Automatically translate reviews into English – This is a convenience.  With one click, I can read the German and French review text in English instead.  I can use Google Translate for this, but it just a bunch of cut and paste.
  3. iTunes App Store Rank tracking – This is cool, way cool.  I cannot easily get this myself.  There may be other services out there that does this, but it is useful to have this in one place.  What would be even better if appFigures can overlay this on my sales/download graph as well.
  4. Sync with iTunes Connect – I don’t use this feature myself since I don’t trust anyone with my iTunes Connect user name and password.  However, for those who are less paranoid than I am, this is a great time saver.

Sex Professor, Day 4

July 27, 2009

Top100Sex Professor arrived at the Apple App Store last Friday.  By end of 4th day, it is at position 34 of Top-100 in Lifestyle Free Applications in US App Store.  It has even better ranking in the Canadian, German, French, Italian, and UK App Stores. How do I know this?  appFigures!  I’m still deciding if appFigures is worth the monthly fee versus the one-time payment for desktop applications.  Here are my assessment for the available options so far:

appFigures (monthly fee) – Very full features and nice graphs.  The monthly fee is based on total number of applications you have in iTunes.  Pricing plan starts from free for 2 applications to $4.99 for the first 2 apps and $1.49/app/month for over 2 apps. This is troubling for me.  It means that I’ll be paying for old applications that may no longer be generating revenue for me.

AppViz ($29.95) – By Ideaswarm. There’s a 30-day free trial so you can try it for yourself.  I’m starting to like it.  It collects Reviews from all the different countries’ App Store so you can view it in one place.  One of the missing features is Rank Tracking and Events like appFigures. It allows you to download directly from iTunes Connect web site or import from iTunes Connect report you have downloaded.

AppSales (free / open-source) – Can’t beat “free”, except you may have to do-it-yourself if you are expecting new features or if somehow iTunes Connect web page design changes and the web import interface breaks.  It has a mobile (iPhone) version that I use in the morning just to get an idea of the last few days of sales.  There’s a desktop version (no longer under active development) as well.  Overall, it is a good option but without a lot of bells and whistles (e.g. Rank Tracking, Review Tracking). It is also without a defined future unless you are willing to do some work down the road.

It feels great and encouraging to hit Top 100.  At the same time, it puts more pressure to get the new upgrade version out this week.  The new version will include additional viral features such as sending results to friends via email  or saving it for posting to Facebook, MySpace, etc. Back to work!