Ad Hoc Test Devices limited to 100. And I mean it!

November 6, 2009 by peter_k_lee

Had a rude awakening a couple of days ago that the 100 devices available in the iPhone Developer Program for Development and Ad Hoc testing is a high-water-mark limit. Once a slot is allocated to a UDID, cannot be reassigned to another device.  You can remove it, but it does not release the slot for a different device.  The remove operation is more like a disable operation meant for preventing access to your test application, e.g. if a beta user started abusing your system in some way.

What does this mean to you, the developer?

You will definitely used up one UDID for your development iPhone.  If you are running a beta test of your application on, say, 50 beta test users.  You collected the 50 UDIDs fromt them.  Uploaded them to your Developer Portal and generated the necessary mobile provisioning files.  You are done with your beta test.  At this point, you have 51 UDIDs in use.

You want to do a second beta test (may be for a different app, or another version of the same app) with a different set of 50 beta test uesrs.  Whoops…too many.  So I deleted the 50 UDIDs from the first beta test and want to add the 50 new beta test users.  Whoops 2!  I cannot do that.  I can only add 49 of them.

Here’s Apple Math:

  • Start: 100 slots
  • Subtract 1 for my Development iPhone. You have 99 left.
  • Subtract 50 for the first set of beta testers. You have 49 left.
  • Add ZERO for deleting 50 users of the first beta test. You still have 49 left.
  • Subtract 49 for the second set of beta testers. You have 0 left.  The 50th beta tester cannot be added.

At this point, you are “done”.  You can no longer add any more devices to this account.  Suppose you bought a second iPhone for testing.  Well, you can’t add it and use it for development testing cause you are out of slots.

The “remove” command makes you think that you can free up a slot.  No it doesn’t.  And once a device is deleted, it cannot be undeleted either.  So you are truly and royally hosed at this point.

There’s one solution though.  Time.  You can wait till your one-year iPhone Developer Program is up for renewal.  Once you renew, you can delete all your devices and then you have 100 available slots again.  You can also apply for a second iPhone Developer Program account, wait 2 weeks or so, pay $99, then you have a second set of 100 slots.  But this will be a different account from the first one and you will still need to maintain the first account for publishing your app.  This second account is purely for development only.

I certainly hope Apple will change this policy in the future.

Will Three20 be flagged as “private framework”?

November 3, 2009 by peter_k_lee

Three20I used the open sourced Three20 iPhone UI library for a recent project. It’s a bit heavy duty if you just need one of the nice UI thingies that is in Three20.  In my case, I want to reuse the photo viewer in a client’s project.  I spent almost a whole day trying to understand how Three20 works and how to adapt some part of it, but it is worth it. For example, the photo viewer is designed to take over the entire phone screen.  But our UI design requires that we keep the Navigation Bar on top visible for context.  With the client’s approval, I incorporated a modified Three20 library in the project and delivered the iPhone app prototype within a week.  I came through like a superhero even though I’m just standing on the shoulder of giants.

What’s nagging me in the back of my mind is the possibility that Apple App Review will reject the application because it uses a “private framework.”  I’ve advised my client of that and they are fully aware of the risk.  However, given the way Apple works, the only way to find out is to finish the app and submit it.

Right after submission, I came across some chatter about Apple rejected an app because it uses Three20.  Specifically, it is about a private API called simulateTapAtPoint:. Joe Hewitt was contacted by Apple and Apple explained why.  There is a suggested fix of commenting out some of the offending code with #ifdef DEBUG to make Three20 kosher for Apple App Review.

Some stories have happy endings after all.

A New App That Pushes the Envelope

October 30, 2009 by peter_k_lee

In my previous life as a Mobile Podcast software/service provider, I get to know many podcasters very well.  One of them is Emily Morse.  She has been doing her podcast, Sex With Emily, since 2005.  The show covers the stuff that we think about but don’t talk about all the time: sex, relationships, dating, cheating, marriage, mistakes, lovers, and even love.  She is very passionate about her work.  Off and on, she took her show onto the public airwaves on radio stations in San Francisco including Free FM and Radio Alice.

About 3 months ago, during the summer, I took the idea of taking her research for her podcasts into a mobile format for the iPhone.  She was thrilled!  The rest is history.

Her iPhone application, 101 Sex Tips from Sex With Emily, is now available on iPhone App Store.  She wrote all the tips and hand picked the tasteful backgrounds on the screen.  It’s all her.  Take this iPhone application with you so you can review the tips wherever you are, at the restaurant, bus stop, on public transit, use your imagination.

swe-about

You can mark tips as “favorites” or email some to your loved ones using the Share Tip feature.  It’s a great way to send a nudge-nudge-wink-wink.

The app was completed almost a month ago, but it took App Store Review team a lot longer than normal to approve this because this app really pushes the envelope on what’s possible in this new mobile format.  Given Emily’s background in broadcast radio, we have been very careful to keep the content racy enough for the audience, but tame enough to work within FCC (and Apple / mobile carrier) guidelines. As of this morning, the app has been approved by Apple.  I have to say that the process is not as transparent as one would hope, but the folks who work at Apple are professional and reasonable.

Here are two (slightly more PG rated) tips for you, free!  You’ll have to purchase the app to see the naughty ones.

swe-tip1

swe-tip2

Seven Themes for a Great iPhone App

October 30, 2009 by peter_k_lee

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 Rule-of-Thumbs

October 25, 2009 by peter_k_lee

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 rule-of-thumbs 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/release yourself.  However, 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 rule-of-thumbs are:
  • Always use @property / @synthesize
  • Set values to instance variables with self.variable = …
  • Get values to instance variables with just variable
  • 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 by peter_k_lee

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 developer.apple.com 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:

InstallFailed

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.

I’m making a Ruckus! And a very Handy Ruckus indeed!

October 2, 2009 by peter_k_lee

It’s time for a change.  I’m starting a new brand for my iPhone applications.  This is in addition to 21gingerman and not instead of.  So, keep coming back to this blog for my views on the iPhone ecosystem, application marketing, and last but not least technical stuff that I learned along the way.

The new brand is called Handy Ruckus.  What? How is that related to 21gingerman?  Name-wise, nothing.  I just felt that iPhone is a very handy device and some of the apps that I’ve been working on better make a ruckus, or else.

QuickROIThe first application published under the Handy Ruckus brand is Quick ROI.  Quick ROI is a rental properties return on investment calculator.  I’ve been investing in real estate while I’m not writing software  for iPhones or building web-based services. I have spreadsheets for evaluating properties.  They are very handy.  However, it is just too hard to lug around my laptop while I’m out and about looking at houses.  So, here comes the handy solution.  An iPhone app that encapsulates the most basic function from my spreadsheets, the Return on Investment measurements.

Take a look at Quick ROI on iTunes.  If you are an App Reviewer and would like an iTunes Promo Code for your complimentary download, please email me at info@handyruckus.com

Happy Investing!

iTunes 9: The Good and The Bad

September 12, 2009 by peter_k_lee

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 by peter_k_lee

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 by peter_k_lee

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.