amusing iphone

Apple: “Yes, we have iPhones in stock. But you can’t buy them”

Apple UK continues to show that they don’t have a clue how to operate a retail operation.

We’ve got an app that’s demoing today and tomorrow, and it would help if I had an extra iPhone4 to run it on. So, I try to buy one from the local Apple shop.

Hi, do you have any iPhone 4’s?

“Do you want a contract?”
“Well, in that case: no. We don’t have any” ([To Other Guards] I told him we already got one)
“But … if I *do* want a contract, you’ve got some?”
“But you won’t sell me one of those, even though you have them?”

When will you have [these magical non-contract] phones?

“No idea. Maybe tomorrow. Maybe not”
“Here’s a phone number – you can call them at 9am tomorrow morning and they’ll tell you if we have any that day”
“So, I can call, and reserve one and collect it that day?”
“No. They’ll only tell you if we have one RIGHT NOW when you call – it could be gone when you get here”
“So, this number is totally useless?”
“Well … it’ll tell you whether maybe we probably might have one. We don’t do reservations any more. We used to, all the time. But then we … uh … stopped”

“Order now, in stock, ships in 24 hours”

amusing iphone

The ultimate excuse for iOS developers…

Rebooting again, everything killed thanks to Xcode4, I thought of xkcd’s comic on “compiling”, and a little modification came to mind:

Appropriately, working with Xcode3 often suffered from time wasted for the weak compiler to churn through relatively tiny projects. We’ve moved on – Xcode4 has a much better compiler/linker/build toolset – but it’s brought it’s own (worse) problem to replace it…

Xcode4 commits IMHO the second-worse (*) sin for an IDE: serious memory / CPU leaks; run it for long enough (as little as 1 hour) and it will crash badly, and drag down your whole computer with it. Since you cannot work without the IDE, this means you waste hours every week just rebooting over and over again. Apparently, OS X has little protection against rogue apps – the whole OS seizes-up, mouse cursor stops working, etc.

Varies from machine to machine, and project to project. e.g. high CPU machines (fast Quad-core) seem to be affected only very rarely (if ever). With some machine/project combos – e.g. dual-core machines around 1.6Ghz CPU – this happens multiple times a day, every day. They’re fast machines, generally – it’s just that Xcode has some fatally bad code somewhere. Xcode3 on the same machines was fine.

(*) – worst sin: data-loss; an IDE that corrupts your source code / build settings. Those just make me lose the will to live.

amusing community games design iphone marketing and PR

Top steps tips viral mobile iphone success profit

Did that get your attention?

In the last day or so, I’ve seen a barrage of crap on this topic – much of it ACTIVELY destructive (it’ll make your iPhone apps less successful than if you didn’t do it!). I’m not going to hotlink most of them – they don’t deserve the attention – but some of them mix bad with good, e.g. a guest post from someone with some good points, but also glaring inaccuracies.

So, some myths:

Thursday is the best day to launch an app

No. It’s one of the worst days. Why? Because every idiot who ever read “Thursday is the best day to launch an app” … now launches their apps on Thursday. Duh!

Facebook and Twitter sharing will make your app “go viral”

Virality is based on value, not on the presence of a corporate logo. Find some *real* iPhone developers, and ask them what happens if you launch an app with sharing in it.

Only apps that are already spreading virally, and heading for major success, ever benefit from this integration.

i.e. don’t bother until you actually need it; in some cases, for big apps, where you’re confident of 100,000 initial downloads … you may need it at launch. Most apps don’t.

Choose carefully every word in your iTunes description

Nope. Ask any experienced developer how many of their users read the iTunes description, and they’ll probably laugh at you. There’s a really, really good reason for this (but this is a post on what NOT to do, not what to do).

Check-in makes your app as popular as FourSquare

Um … WTF? How stupid are you?

“You need check-in on everything. Let your users check in to articles, blog posts, events, places, shopping items, videos, or even slide share feeds ☺.

People love to tell their friends where they are and what they are doing, so just make it easier for them.”

Who’s that from? Oh, yes – a company that doesn’t actually make apps, but sells a product to churn out crummy identikit apps, where “check-in” is one of their features.

No. In general, it just annoys people. Unless it’s part of the app’s core activity – but in that case, you never had an option to “not” include check-in. (also: why are you even trying to compete with 4square? Have you any idea how tough that is?)

Chart ranking is everything

Again, this is from the school of:

“I am a marketing person who doesn’t make apps, and doesn’t know what they’re talking about. Nor do I bother to ask anyone who does”

…because this info is several years out of date (i.e. a lifetime in App Store terms). In fact, for the last 10-18 months, chart ranking has been largely irrelevant in a lot of sectors – largely due to the surge in FAAD and their ilk.

Engaging with “the community” will give you huge sales

Sad but true: first you need a success before you even have something we’d call “a community”. You need a substantial number of downloads – AND daily actives. “Ten of your mates downloading it once” does not a community make.

Variant: for games, pandering to the TouchArcade community

Ask a game developer how easy / successful it is to promote your game on TA.

Again: back when almost no-one was doing it, this helped enormously. But that was years ago. Now … good luck getting any visibility amongst the sea of other developers doing exactly the same thing.

And finally…

If you feel you want even more “gotchas” and things to avoid, have a look at Jake Simpson’s very recent (February 2011) experiences of trying many of these – and more! – and having them fail miserably.

NB: Jake’s experience was particularly harsh, and actually goes more negative than I think is accurate, in general. At some point, I’ll do a followup that looks at the good parts (things you SHOULD do, that never seem to get old).

But, let’s be clear: mostly, this is standard Marketing. If you’ve hired someone to do your marketing who even bothers to read these sites, you made a mistake. Instead, find someone who’s good enough at marketing to invent the tactics they need all by themself. Preferably, hire someone for their skill at marketing “strategy”, not for their knowledge of “tactics”.

advocacy iphone web 2.0

iPhone themes for your website: Say it with XKCD

Oh, yes:

…please, FOR THE CHILDREN, don’t put a “make it look like an iPhone app, but remove 90% of the content” theme on your website.

conferences entrepreneurship games design iphone programming startup advice

I’ve got an idea; I’ll give you 25%…

…if you:

  1. finish it
  2. and design it
  3. and build it
  4. and test it
  5. and refine it
  6. and launch it
  7. and sell it
  8. and market it

…for me.

This was the tempting offer whispered in my ear this evening by a hard-up web-developer at a networking event, once we were alone, and he’d heard I developed iPhone apps.

For the record, this is the worst offer I’ve ever had – even in the days of the iPhone goldrush (2008, mid 2009) the least I was offered was “one third”. Since then, even the unrealistic offers usually start at $2,000 cash up-front.

I smiled, and said nothing.

I carried on the conversation, when he suddenly broke into a long (minutes) tirade of abuse in the middle of the venue, because I’d “blown [him] off” when he’d “offered to share [his] great idea”.

I stood there in silence for another 30 seconds, wondering what to do: should I respond in kind? should I try to help him? should I walk away?

I decided to try and help him. I asked him to think about how his offer sounded to someone who makes apps for clients every day. (he ranted about how I thought I “was the Big Man – BUT YOU’RE NOT!”). I apologized profusely for offending him, and said I’d try to explain (he told me to “scuttle off, little man”). I made one more attempt – I pointed out that after inadvertently offending him, I was at least trying to make amends, and all he seemed to want to do was insult me. He sneered.

So, my public-service act for the day:

How much does it cost to develop an iPhone application? (tl;dr – $250,000 for a good one)

(note: when we talk to clients, I advise them the sane limit is c. $150k for a great one, or $75k for a good one. The $250k figure is accurate if you’re doing own-IP and it HAS to be awesome (like twitterific, quoted) – but you always end up spending more when it’s your own IP – or if you work with extremely expensive digital agencies who don’t have in-house iPhone specialists. Most of the good, solid iPhone dev teams are about half that price)

NB: this problem (“I’ve got an idea, I’ll let you have it in return for a profit share”) is prevalent among people who know nothing about computer games, as much as for people who know nothing about generic iPhone apps (but who read the papers and think they’re sitting on a goldmine. That’s very interesting in and of itself…

At the end of the day, I walked away from Mr. Abusive. Some people just don’t want to be helped, sadly…

facebook games industry iphone social networking

ngmoco … really worth $400m? Hmm

Another interesting post from Dan Lee Rogers on whether the money paid for ngmoco last year was reasonable.

(hint: Dan is clearly rather doubtful, IMHO with good reason) E.g. …

Further, Ms. Namba stated that DeNA’s purchase decision was based ngmoco’s ability to create hit iPhone games, which begs the question: what hit games? The ones they were giving away for free or the ones they lost money selling?

Perhaps ngmoco showed DeNA some sort of new-fangled accounting scheme to justify their purchase price? Unfortunately, whatever it was is a mystery to all of us simple cotton pickers.

Harsh but probably fair. I’m settled in with the popcorn, and eager to see where this goes next.


Sony love…

Despite this week’s PR disaster for Sony Ericsson, their new Android phone (due out soon) looks fantastic:

Personally, I am convinced that Sony Ericsson makes the best Android phones available, bar none. e.g. although many people prefer the X10 full size, I still think the Xperia X10 Mini is one of the best phones I’ve ever used (modulo some terrible software, because Sony can *never* seem to get software right).

As a consumer, I love it – it’s almost perfect (I just wish it had a high-quality camera, instead of a pre-iPhone quality camera).

As a developer, I’m frequently impressed by just how much it packs into a tiny form-factor. Every time I think “ah, crap – this isn’t going to work on the Mini”, I’m pleasantly surprised.

Apart from one thing, of course … Sony’s refusal to ever support current versions of Android OS.

dev-process iphone programming

Sony Ericsson betrays customers, claims it’s an improvement

Google keeps improving Android. Android version 2.2 is one of the most important releases ever – it speeds up the whole phone (every game, every app, runs noticeably faster), along with bugfixes and new features.

Sony Ericsson has caused much hate among consumers by shipping their flagship phones with OS 1.6, even when 2.1 was already available, and then being very, very slow to “allow” their customers to upgrade (the upgrade is essentially free, Google doesn’t charge for it).

So far, no news at all.

But this week, Sony’s official Twitter account posted this, along with possibly the world’s worst excuse from a mobile company:

There will be further system updates for the X10 handsets however there will not be any more updates to the Android platform.

We believe the features included in the Android 2.1 phone are on par with, and in many cases better than, a vanilla installation of 2.2 #X10

i.e. “that expensive phone you bought in the last 9 months will never run many of the new apps on the Android marketplace. We believe you should be grateful because it’s a really pretty phone, and who cares about apps / games / etc anyway? iPhone? What the hell is an iPhone?”

The sweet stench of cow-manure

Let’s put this into perspective…

When you write apps for Android, before you even write the first line of code, you have to choose the minimum OS version that your app will work with. The older the version, the fewer the features that you have access to. Also, the more bugs you’ll have to workaround (even Google has bugs :)).

So, you leave out some features, maybe. But there’s more: many of the features of newer versions are things that are invisible to the user, but which make development quicker, easier, or less error-prone.

i.e. going with an older OS means that the developer has to pay more, work harder, for less reward, producing an inferior product. It’s not very tempting!

And Google just released Android 2.3, so 2.2 isn’t even the “current” version any more, it’s the “old” version.

…net result: lots of developers will be making Android 2.2 the “minimum” version. Sony is actively “locking-out” their customers from using the phone they own to download and purchase (a percentage of) new apps. Today, that percentage is small – but it will get bigger every day, and Sony has declared they will “never” fix the problem.

2.2? Why not 2.1? Why not 2.0?

There’s lots of improvements in 2.2 that make developers lives easier or less expensive, but there’s a single “flagship” featuer that overules everything else. This one feature can easily cut 20% of the cost of development.

2.2 has improvements to the Java VM, that make *all* apps run faster. c.f. my own experiments, where my space-invaders game ran approx 20%-30% faster, just because I upgraded the OS.

That saved me possibly weeks or months of coding that I would otherwise have spent hand-tuning the code to increase performance. Performance isn’t everything, but … the wide variety of Android handsets means that even relatively simple apps may struggle to run at decent speed on some of the handsets out there.

Of course, if I don’t use *any* of the other features, I could still release this app on 2.1 … but all the people with 2.1 would be getting an inferior experience, and many would complain and rate the app down. It’s probably less damaging – and more profitable – for me to simply ban people with “old” versions of Android from using the app at all. That way, they don’t get disappointed, and won’t be able to down-rate it.

dev-process fixing your desktop iphone programming

Installing/Developing Android (especially on OS X)

UPDATE: updated August 2011, with more detailed / idiot-proof instructions – and a couple of shortcuts. NB: when you’ve done this install once, and checked the relevant bits into your Source Control, it becomes *very* fast/easy to re-install – it’s only long-winded the first time.

I thought I’d blogged this before – the install process from Google is appalling, and I wrote up detailed instructions for colleagues about a year ago. Sadly, looks like I never published the post. I just did a fresh install on OS X (January 2011) and the process *still* is riddled with flaws. I get the impression Google won’t fix it anytime soon.

NB: the biggest single problem here is: Version Control. Someone at Google appears to believe that version control is “unimportant” and that developers should “not be expected to make reproducible builds of their software”.

But … even if you’re a sloppy programmer who doesn’t do proper version control, you probably STILL don’t want to use Google’s auto-installer. It can’t cope with basic stuff like “internet connection drops for a few seconds while ADSL re-dials” – things that your web-browser deals with perfectly. e.g. as of Jan 2011, the Android auto-installer managed to crash Eclipse just because of a blip in net connection. Pathetic, really.

(not to mention the hassle of re-downloading hundreds of meg of data over and over again for every PC in your office … this document will let you download most of it once only, and install it multiple times)

I don’t have a perfect solution, but here’s a guide for how to (mostly) un-**** the installation process for Android development.

Developing for Android: Essentials

The main IDE for Android is the (mostly excellent) Eclipse – with some custom plugins built by Google/Android folks. Once it’s up and running, it’s definitely the best free solution. To make this work, you need:

  1. Eclipse IDE … *any* flavour
  2. Android plugin for Eclipse (called “ADT”)
  3. The version-independent Android SDK (called “android-sdk”)
  4. A specific OS-version of Android (e.g. current latest is v2.3)
    • NB: plus you need a “platform tools”, which you download/install in the same way, but is an extra file/feature

FYI: the first item is from Eclipse, the last 3 are all from Google. Although Google keeps trying to kick you in the teeth, you can workaround their foolishness relatively easily for the middle two items. The big problem is the last item. More on that later.

Installing Eclipse on OS X

What follows comes mostly from:

Once a year, I call-out for the appalling user-experience of downloading and installing their software. They’ve had a decade to get this right, and they still get it so wrong.

As of Jan 2011: there’s been a big improvement recently – you can now find the download link quite easily. At there is an enormous “DOWNLOAD ECLIPSE” button in the top right of the page, in bright yellow. This is excellent.

Sadly, the download link DOES NOT DOWNLOAD ECLIPSE … instead it takes you to a screen that demands you choose the “correct” version out of 12 offered to you, with literally no help at all. The majority of users want one of only 3 versions from that screen. In fact, I suspect 99% of people that come via the front page only want one version.

Furthermore, there is *still* no download for OS X. There is *part of* a version for OS X, but no-one has done the 5-10 minutes of setup that would make it install correctly on OS X forever more. Instead, you have to manually muck about with your computer, your administrator account etc. FAIL.

1 of 4: download the “Eclipse IDE for Java Developers” file.

Unzip it. Unzip it *again*, because they decided to use archaic Unix compression instead of ZIP.

Now you have a new folder, called “eclipse”. You have to put this somewhere. There is (officially) no official location for this … good luck getting support if you put it in a “bad” place.

Most people drag/drop this folder to their Applications folder in Finder. This kind-of works, but again because the Eclipse team haven’t spent a few minutes making an OS X manifest (could have done this any time in the past few years!), the “” file is broken. If you drag/drop that file to anywhere, it will stop working.

Instead, you have to manually create a shell script to run Eclipse. I’m not even going to go into it – if you want an icon in the right place on OS X, Google for tutorials on how to make a working Alias specifically for this app (working around the broken one from Or … just live with the fact you have to navigate to the “eclipse” folder before you can start the application.

Download the necessary plugins for Android

What follows comes mostly from:

Immediate FAIL from Google: the download page lists *ONE* download file, out of the *FOUR* that are absolutely required in order to do Android development. There is no mention of the others :(. How am I supposed to install the software if you won’t give me the links? Your crummy auto-installer is no subsitute.

2 of 4: At least it will get you the SDK, so download that directly

… from the main download page

If you dig around the site, read through 3 sets of instructions that all tell you not to download anything, and keep bullying you into using the crappy auto-downloader instead, you’ll eventually find a file something like:

3 of 4: ADT ZIP file

(Jan 2011:) (if you google for “ADT-8” or “ADT-9” you might find future versions on the site, since Google refuses to put them in a sensible place anywhere). Alternatively, the latest version should always appear at the “magic URL”:

(Aug 2011:) currently it’s on version 12 …

(usually, this download link is hidden in the section “Troubleshooting ADT Installation”. The Magic URL … I’ve never seen anywhere. You have to know how Eclipse works in order to deduce it. For the record, other companies (including Eclipse’s maintainers) put a webpage at the parent of that URL, to help normal users. This one just does a 404 Not Found)

Finally, you need the bit that Google *really* doesn’t want to give you: a specific version of Android OS to develop against. You need to find the URL for a “repository.xml”. In this case, you can see it flash up briefly when the auto-installer is refreshing the repository (the part that does this is called “the Android SDK and AVD Managers”). You can try that URL:

4 of 4:

Google could easily have provided this URL in the docs, since it is the “official” index for downloading the other files you need, but for some reason they chose not to.

There’s 2 ways to avoid Google’s broken auto-installer (which you shouldn’t be using anyway, unless you don’t care about updating your own Android apps in future).

1. Create a local “fake” repository by manually reading an XML file and downloading each file by hand.

This used to work – in 2010, I used this successfully. In 2011, it refused to work. Something critical has changed in Eclipse so that it doesn’t recognize fake repositories – or I just couldn’t reverse-engineer the format correctly any more

2. OR: … download the files you want, and later manually copy them into the folder where Google requires them to be copied.

NB: the auto-installer often fails / timesout / dies when trying to do this. This is all it needs to do, but it’s rubbish. I’ve found that doing it by hand is usually less error-prone, tragically.

To download the files, you need the URL’s of each version of Android you want to support. Google refuses to put these in a webpage (why? Who knows?), but it’s not hard: open the XML link above – your browser should be able to view it directly: (opens fine in Firefox)

Scroll down – it’s a human-readable file – skipping the huge license. You’ll see a lot of “sdk-platform” sections – each of these is a single verison of Android, and contains one URL for you. e.g.:

<sdk:description>Android SDK Platform 1.1_r1</sdk:description>
<sdk:archive os="windows" arch="any">
<sdk:checksum type="sha1">a4060f29ed39fc929c302836d488998c53c3002e</sdk:checksum>
<sdk:archive os="macosx" arch="any"><sdk:size>45584305</sdk:size>
<sdk:checksum type="sha1">e21dbcff45b7356657449ebb3c7e941be2bb5ebe</sdk:checksum>
<sdk:archive os="linux" arch="any">
<sdk:checksum type="sha1">c054d25c9b4c6251fa49c2f9c54336998679d3fe</sdk:checksum>


For each one you want to download, look for the highlighted bit above. That gives you a filename – if there’s no OS X section, take the linux section instead.

You then append that filename to the URL you used to get the repository, i.e.:

“” + “[filename you picked above]”

I’m afraid you have to do this for each version of Android you want to build against – but for most people, that means “just the most recent few versions”.

5 of 4: another ZIP you need: “Platform tools”

You will *ALSO* need – while you’re at it – to grab an “Android SDK Platform-tools”. Google doesn’t mention this as a separate stage, because their auto-installer treats it as part of the 4-of-4 items above.

It’s another file with the URL stored in the same repository.xml from the above step.

However, it lives right at the bottom of the XML file, in a section that looks like this (there’s only one of them – no choices to make – just grab it):

<sdk:description>Android SDK Platform-tools, revision 6</sdk:description>
<sdk:archive os="linux" arch="any">
<sdk:checksum type="sha1">292732c6a86971b95ca61ba8bf84cd9d6c2285c3</sdk:checksum>
<sdk:archive os="macosx" arch="any"><sdk:size>15127727</sdk:size>
<sdk:checksum type="sha1">86c958b461b6244e74b4e0489ea7cef9a681d882</sdk:checksum>

<sdk:archive os="windows" arch="any">
<sdk:checksum type="sha1">14acb6271c71dce94bba879496cd66e09ae144af</sdk:checksum>

Installing ADT (the “eclipse plugin for Android”)

If you downloaded this directly, as detailed above, then Google’s post-install instructions are weak. The download ZIP also has no install instructions with it. Here’s a short version:

  1. Unzip the ADT file (Google is happy with ZIP, unlike Eclipse)
  2. Create a “magic” folder for Eclipse somewhere, which is where you’ll store all your Android SDK’s, ADT plugins, etc. Create a sub-folder “local repositories”
  3. Move the ADT folder into “local repositories” (you will probably want to upgrade this later, so you need to be able to find it easily)
  4. (NB: sad design flaw of the auto-updater – it’s hardcoded that you MUST give each repository a unique “name”, even when this makes no sense to the developer)
  5. … NB: as of August 2011 … what follows is pieced together from Google’s incoherent documentation – you won’t find these steps written clearly + correctly anywhere on the website :(
  6. [aug 2011]: “Start Eclipse, then select Help > Install New Software….”
  7. [aug 2011]: “Click Add, in the top-right corner.”
  8. [aug 2011]: In the Add Site dialog, click Local (not “Archive”, as per Google’s instructions – Archive causes other problems later on)
  9. [aug 2011]: Browse and select the folder you unzipped/created/moved in step 3
  10. [aug 2011]: “Enter a name for the local update site (e.g., “ADT Plugin”) in the “Name” field.”
  11. [aug 2011]: “Click OK”
  12. [aug 2011]: “In the Available Software dialog, select the checkbox next to Developer Tools and click Next.”
  13. [aug 2011]: “In the next window, you’ll see a list of the tools to be downloaded. Click Next.”
  14. [aug 2011]: “Read and accept the license agreements, then click Finish. ”
  15. [aug 2011]: …Google doesn’t admit this, but some of the ADT components aren’t signed, which is a security hole. Eclipse rightly says: “Dude, are you sure you want to install unsafe software?”. You have no alternative, though – until Google re-builds the plugin to be properly signed, you just have to accept it.
  16. [aug 2011]: “When the installation completes, restart Eclipse.”

Jan 2011: Bizarrely, at this point the auto-updater hangs for a few minutes, randomly contacting internet sites for stuff that I expressly did NOT attempt to install. I’m not sure if this is a bug in the current Eclipse, that it “hi-jacks” the plugin-install process and tries to update the rest of Eclipse, or if it’s a “feature” of the Android plugin – that it secretly triggers additional installs from the internet.

Installing the SDK

In Google’s docs, there’s a whole page for installing the SDK.

It does not – at any point – tell you how to install the SDK.

Instead, that information is inside the page for installing the ADT plugin for Eclipse.


To save you navigating their bizarre instructions, I’ll copy/paste them here. First, however, you need to create a local install directory for the SDK (they forget this step, of course). Put it somewhere that you’ll never accidentally modify or delete – if you do, Android apps will stop building in Eclipse until you manually fix everything again. Given how tortuous the main instructions are, I’ve seen smart people diagnose the problem but have massive trouble figuring out exactly how to rectify it.

Anyway, once you’ve picked a location, unzip your SDK zip file into that folder, and proceed with Google’s instructions:

1. Select Window > Preferences… to open the Preferences panel (Mac OS X: Eclipse > Preferences).
2. Select Android from the left panel.
3. For the SDK Location in the main panel, click Browse… and locate the directory that was created when you unzipped (Google words this badly – it MUST be the folder that came out of the ZIP – Eclipse will check the contents of the folder, and reject if you select its parent folder, or one of its children)

4. Click Apply, then OK.

Installing the “Android Platform versions”

This is the install part that matches the “4 of 4” download part above.

Take each ZIP file you downloaded, and unzip it.



This will give you an *incorrectly named* folder, e.g:

  • android-3.2_r01/

…you *may* need to manually rename this using the “<sdk:api-level>13</sdk:api-level>” tag that was in the original repository.xml where you got the download URL from. Each downloadable ZIP file had a different – unique – api-level tag.

The new format (I’m not sure this is required, but it’s what the installer does, so I recommend doing it):

  • android-13/

Finally (!) … find the folder where you unzipped the SDK earlier. That will have files/folders very similar to the following:

  • add-ons/
  • platforms/
  • tools/
  • SDK Readme.txt

Take your (possibly renamed) folder – in my case “android-13/” – and move it into the “platforms” subfolder.

The ADT Eclipse plugin will automatically discover this when you restart.

…go through the same process for each Android Platform version you downloaded.

Shortcut: if you’ve done this before, with a previous version of Eclipse / ADT / Android … you can just take the sub-folders of “platforms/” from your previous install, and copy/paste them into the “platforms/” sub-folder of your nw SDK version. Easy.

Installing the “Android Platform Tools”

…this works in exactly the same way as the “Android Platform versions” above, except it goes in a different folder.

In this case, you need to take the zip file, unzip it, and rename the output folder to precisely:

  • platform-tools/

…then copy/paste it directly into the SDK folder. There shouldn’t be a “platform-tools/” folder to start with – this is how Eclipse/ADT knows whether or not you’ve “installed” it: it just looks for a folder with that name.

OPTIONAL: Downloading + Installing the Android SDK documentation

UPDATE: sorry, I missed this out originally.

Again, just like with the “Android Platform Tools”, you have to manually grab the URL for this from the repository.xml

The piece of XML in the repository.xml you need is:

<sdk:description>Android SDK Docs for Android API 13, revision 1</sdk:description>
<sdk:archive os="any" arch="any">
<sdk:checksum type="sha1">5dadb3b30e1f837716f8a5ef840e31abddf69b38</sdk:checksum>


…then take the zip file, unzip it, and rename the output folder to precisely:

  • docs/

…then copy/paste it directly into the SDK folder.


Phew! Finally! You should now be set for Android development!

iphone programming

Writing apps for Nokia / Ovi – Attempt 1

I’ve written lots of apps for iPhone/iPad and Android. Recently, Nokia kindly gave me a new N8. So, over Xmas, I thought it would be fun to write some games for it.

Didn’t get very far. Nokia “only supports Windows”, according to their developer site.

There also seems to be a lot of confusion over which language they expect you to use – Symbian C++? (which has the confusing one-line explanation “Edit”) … Python? … J2ME? … etc.

I found a promising doc that talked about “porting from Android to S60” – which would give modern developers a way to write good code (i.e. in Java), and then back-port, maybe. But it was riddled with missing links, missing info, and bizarre propaganda (e.g. implying Android is “bad” because it supports standards like Java, whereas J2ME is “good” because … it doesn’t)

At this point, I (temporarily) gave up. I’d like to re-visit this in the New Year, but right now I don’t have a Windows machine with me (I’ve only got my Apple laptop). Android will let me write code on my laptop, then jump straight to my desktop once I’m back at work.

Of course, Apple only “allows” you to work on non-Windows machines – but they are the market-leader, they can get away with this (evil though it is!). IMHO, Android and Nokia/Ovi cannot.

I’m surprised and disappointed that Nokia has so little apparent interest in pulling-in wayward iPhone devs. If it were me, I’d have thrown up a massive, colourful, front-page picture saying: “iPhone developer? Fed up with Submission? Want to sell your apps to 1 billion people? Click here!” … or similar.

Given how painful Apple’s app-submission process is, there are plenty of iPhone devs looking for alternatives.

With Android, you can go straight from iPhone dev to Android dev. There’s a simple website dedicated to new developers (with some serious flaws and missing pages in the docs, but the experience is otherwise good). Nokia’s setup by contrast seems like they’re not really trying (yet).

games industry games publishing iphone

Gamers play on iPhone instead of hand-held consoles

Even if you own a Nintendo DS or a Sony PlayStationPortable, there’s a high chance you’re playing games on your phone instead:

“27.2% of consumers who indicate that they play games on their phones only (and not on the DS/PSP) actually own a DS or PSP, but do not actively use the device(s).”

Admittedly, it’s a terrible, amateurish statistic – it’s missing the REAL stats that we need to corroborate the concept – but the report is pay-for, so I can’t look that up.

Still, assuming the report isn’t woelfully misrepresented, it’s a seriously big proportion who own yet have given up on their Nintendos and Sonys. Now compare that with all the people who haven’t forked out the hundreds-of-dollars to buy one yet: how much harder is it going to be to grab them?

Snapshot: But… is it worth publishing on iPhone?

Are there enough consumers purchasing games on iPhone to make it worth it?

(NB: this is an ultra-quick analysis, based on the various stats and info I’ve read recently – if you want references you’ll have to pay someone, or google it all yourself)

As of Dec 2010, approx:

  1. 140m DS
  2. 60m PSP
  3. 120m iPhones
  4. …approx 20m-40m iPhones “owned by under 30s” (many competing guesses in this area)

Given that iPhone has two of the top 5 slots on children’s Xmas wishlists (once as iPhone, once as iPod Touch), I’d feel confident in saying that iPhone has already overtaken PSP’s installed userbase.

Of course, iPhone app price is approx 10 times less than PSP/DS game price. But … family spending tends to be fairly constant, developers get much higher revenue share on iPhone, and cross-promotion of your own games is spectacularly successful on iPhone.

So, assuming you develop more than one game, you should be getting the same or higher revenues on iPhone games. And yet the development costs are significantly lower than on DS/PSP.

iphone programming

Nokia N8: doesn’t connect to computers

This week, I won a Nokia N8 at a game of pool (She Rides!).

If you plug it in to a Mac, do you get:

  1. Access to your photos? NO! (no support for the USB standard for data-devices)
  2. Access to your calendar? NO! (this is a tough one; sadly, the world today has no standards for calendars :( :( :( … but it ought to do *something*?)
  3. Anything at all? NO!

*IF* you’re technically minded…

Google is your friend. You discover the “iSync” application.

Apple’s App sucks, but even when you download and install the Nokia plugin, it tells you that the Nokia N8 is “unsupported”.

Googling, some people find that it is “supported” the very first time you run the iSync app – and never works afterwards.

I had the opposite experience: it was “not supported” the very first time I ran the iSync app – and seems to work fine on all subsequent runs.

And even after all that…

…it doesn’t allow you to sync photos. Only address book and calendar. The photos you take with the fancy 12 MP camera are doomed to stay inside your phone forever, it seems.

This feels like ten years ago. Some people worship iTunes (hard to believe, given how terrible the user-experience is), but experiences like this remind me why: it’s because the alternatives managed to be even worse :).

conferences iphone

Going to GDC 2011? Want an iPhone app for the conference?

Last GDC, we made an iPhone app for friends at the conference, but it got stuck in submission for too long (Apple was being paranoid about anything with location/GPS at the time. Sigh) and only a handful of people got to use the app (our beta testers).

We ended up re-using the tech (and improving it) for client projects during the year – including a 4-star app for the Venice Biennale (100,000 people descend on Venice for Art/Architecture festival).

GDC’s organizers didn’t want an app for 2011 – the last we spoke, they’d commissioned a mobile website instead. As they pointed out, it may be lowest-common-denominator, and lots of usability problems (what do you do when you have no internet?), but it’s likely to work for the BlackBerry users, unlike an iPhone/Android app.

But it looks like we’ll have some free time / spare cash in February, so I was wondering if it was worth updating our app from last year, and putting it into submission really early this time.

Votes yay/nay?

The tech we built works out where all your friends/colleagues are right now (iPhone only), and includes stuff like a live-updated list of all the unofficial parties (this year there were about 25 parties, only 5 of which were on the conference website, IIRC)

EDIT: PS – if we’re paying for this ourselves, we couldn’t afford an Android port, so this would be iPhone only

amusing iphone

Mobile signatures: a new artform?

As Tom puts it:

“Spelling curtesy of Iphone”
“Periods everywhere? Sorry, this email was composed on Google’s Nexus One”

Mobile signatures: a new artform…?

Other good ones out there – any favourites?

(the less imaginative, literal one above is mine, I think. Now in hiding, since I’m back on iPhone for the next few months)


Perennial problems of launching an iPhone app…

We launched an app this week that’s been exhaustively tested:

  • 2G, 3G, 3G S, 4
  • iPod 2/3, iPod 4
  • OS 3.1, 3.1.3, 4.0, 4.1, 4.2
  • 10+ different human testers
  • Apple’s own testing (App-review process)

…and yet we’re getting 1-star reviews on the app store, citing “this app crashes on startup”.

Meanwhile, according to Apple:

“No crashes for this app”

It’s always possible that someone’s writing shill reports, but I find that very unlikely. I find it far more likely that there’s some bug somewhere that’s affecting a narrow range of existing users.

Yet there’s literally no way for us to uncover this. Apple still provides no means for a developer to contact users. You are forbidden from sending replies or messages to the people who review your app.

Those people are assuming (we know, because they say this in their review!) that we know about the crash and can do something about it – we can’t. We cannot do *anything* until one of these people contacts us and gives us some crash info. Or allows their phone to upload crash reports to Apple.


iphone Web 0.1

InformationWeek attempts iPhone website; Fails

As an iPhone developer, I often encounter companies that try to save a lot of money by making a mobile website and then claiming (to their partners / customers / advertisers) that it’s an iPhone app. In some cases, I believe this is a good idea – they don’t have the content/presence/depth to support a full app, and a mobile website works equally poorly across all devices.

Then, occasionally, you find a company that tries to be *really* cheapskate, and specifically targets iPhone with their mobile website. This generally goes horribly wrong, and costs substantial development effort.

For instance, Information Week:

That popup is part of the website, not part of the app, and this is being viewed in bog-standard Safari on iPhone.

Someone has carefully hard-coded the webpage to:

  1. Detect iPhone as the client
  2. Draw a dialog box that assumes a specific version of Safari browser
  3. Draw a pointer to where they “know” the + button is in Safari
  4. Detect whether the + button is pressed
  5. Respond to clicking the X button in top right

…but it’s not a native app, and here’s the key thing: it doesn’t work.

The box positions perfectly, and no doubt the devleopment team (internal? external? how much did IW pay for this?) were able to demonstrate it appearing to work correctly to their stakeholders.

But, sadly, the mobile website is (apparently) incapable of detecting the X button correctly: that dialog box cannot be dismissed. It stays forever. It disappears for only the briefest of moments, then comes back again.

In the process, not only does it obliterate 30% of the screen space, but it also causes the browser to slow down for half a second while it does all the (slow) javascript calculations to position the “clever” popup box in the right place.

(a native app, of course, would be using a compiled language, and would run the same code 100x-1000x faster; the user would see no delay)

Net effect?

The user is so pissed off they’ll go out of their way to STOP visiting the Information Week website. IW loses money.

And, the irony: if IW had spent no money at all they would have been better off. The iPhone renders rich websites perfectly, certainly better than any custom iPhone skins I’ve seen. Sadly, a large number of web designers persist in trying to “prove” they are just as good as iPhone designers by making these custom skins. I’m not sure why, but it comes across as desperate and despairing, and a little pathetic. Good web designers are good at web design; good iphone designers are good at iPhone design; what’s the problem?


Generating iPhone App Icons

A couple of years ago, someone setup this neat, handy, site: (DON’T USE THIS)

…but their web skills were poor, and their script kept crashing, and they couldn’t be bothered either to fix it or to document the bugs. Or even to just … you know … release it as open-source and let someone else fix it.

I wouldn’t mind, except I’d contacted the authors multiple times, and simply been ignored.

I run a local non-profit group that hosts monthly iPhone events for designers, programmers, clients, freelancers, etc, and I was stuck with this tool as the only free icon mangler that made decent icons at minimal effort.

Finally, I’ve found an alternative. It’s not quite so quick-and-easy (and it requires flash), but it does the job:

Notes to self:

  1. Set the output size to 64×64 or it will destroy the icon quality
  2. Set the “icon shadow” to “normal” (bizarrely, it always defaults to “not normal”)
  3. Resize to 60×60 afterwards to get an icon that’s ALMOST exactly 57×57 (iPhone size) with applied shadow

iPhone: massive news for developers re: App Store

After 2 years, Apple finally shares the list of reasons that they reject apps (approximately 100 or so – it’s not complete, but it’s close)

This is big news – finally, professionals can act professionally and do their own QA before submitting apps, rather than just wishing and praying.



iPhone bugs to make you weep: OS 3.1.3

If you are an iPhone developer – or if you know any iPhone developers – don’t upgrade your device to 3.1.3, and more importantly: don’t upgrade to the latest Xcode.

(this came out last week)

Among the regression bugs (i.e. stuff that they fixed in the previous version, but because theire process sucks, they’ve broken again), is this really annoying one:

When choosing a signing certificate, you can no longer see which profile coresponds to which app.

(if you only have a single iPhone app, that’s almost OK – although as soon as you get expired cert problems, it will cause you hell, since you’ll have no way of seeing which you’re using)

For most developers … with dozens of provisioning profiles … this makes life extremely difficult at app deployment time. Early versions of Xcode were infamous for how buggy and difficult this was. In the last version of Xcode, Apple finally did something sensible, and displayed the full info. You could read the text, and know which was which. Now … you have to manually type out 8-character random strings, and open up the profiles, and find the ones that correspond to that same random string. Ugh.

Here’s hoping that 3.2.1 isn’t long in coming, and fixing this stupidity…

conferences games industry iphone

Google and the Games industry

Google is giving away free Nexus One handsets to mobile developers attending the GDC this year

Google is not a games company; Google has never shown any interest in the $75 billion (roughly) games industry. Suprising? Not really … $75 billion *for the entire industry* is smaller than some individual companies in other sectors (e.g. off the top of my head, IBM makes more revenue than that *every year*, e.g. VISA has a market cap of $70 billion, etc).

But … maybe iPhone has changed all that.

Games on iPhone weren’t initially the big fuss, but as the first year of the App Store came to a completion, it was clear that the million-selling apps were set to all be games. This was an excellent handheld gaming console.

Perceptions shifted; giants like EA who’d resolved to ignore iPhone (typically after making expensive failed investments in the Wii) did an about-turn and came onto the platform in force. Mainstream and tech-industry press came to see games as really the be-all-and-end-all of 3rd party apps on the phone – often ceasing to talk much about other apps, except as novelties.

2010 and the annual Game Developers Conference

GDC is almost upon us. This is the main event in the games-industry calendar (forget E3; this is the less glitzy, less marketing, more developers, higher value, more real one). And lo and behold in my inbox today:

# Register by the Early Bird Deadline of February 4th, 2010.
# Register to attend the GDC Mobile/Handheld Summit, the iPhone Summit, or the Independent Games Summit

# receive a device from Google and GDC during the registration process.

… the “device” is explicitly either a Google Nexus-One, or a Motorola Droid (randomly chosen).

[EDIT: from Simon Carless’s comments below, I’m completely wrong on the GDC changes last year. This post isn’t meant to be about GDC, it’s meant to be about Google, so I’ll follow-up in the comments – but don’t take the next two paragraphs as correct, they’re probably wrong.]

The marketing materials for the GDC this year have been unusually big on the discounts, with not just one but two public extensions of the discount deadlines (this is unprecedented as far as I can remember). Clearly, the recession (and the mass redundancies at games companies) has hit the GDC organizers quite hard.

(last year’s GDC had perhaps 40% fewer attendees than the year before; it felt like the quiet conference it used to be, rather than the massive conference it had become. I’m guessing the organizers are working hard to reverse that, even in the face of the economic situation)

…and yet we see a $550 phone being “given away free, guaranteed” to every developer that buys a $550 conference ticket. Wow. That’s a pretty thick, long, solid line in the sand being drawn by Google…


Bizarrely – and IMHO a very very stupid move – speakers are “not allowed” to take advantage of this.

So, let me get this straight:

  1. You decide to target the international games industry, at it’s biggest annual conference
  2. You give away free, expensive, top of the range Android phones to *every* developer, but only the ones specialising in Mobile
  3. …but you ban the 500-odd people who are the pre-eminent experts and the thought leaders in this industry from participating?

It could be down to the potential for abuse – speakers can choose to declare themselves “mobile” developers while still attending all the other summits due to a quirk of how the GDC is organized.

But my guess is that there’s something annoying here about state laws and income tax or competitions and lotteries (governments can be over-protective of their monopoly on gambling income), but it strikes me as a major fail. Microsoft managed to give away $1000 HDTV’s at a previous conference independently of paid/unpaid status (IIRC), so I’m sure Google could have found a way.

(just to be clear: for the first time in about 4 years, I’m actually *not* speaking at GDC, so I’m not affected by this one way or the other. I’m just really suprised at the exclusion)