First two trivial parts of getting App Inventor working on Raspberry Pi done

I’ve been playing a small bit with the Raspberry Pi VM on VMware to see what’s possible and what isn’t. One thing I am eager to try when it arrives on the week of May 14th (YAY!), is to get App Inventor working on it.

There are three basic user parts to App Inventor. The browser-based Designer, the Java-based Blocks Editor and the Phone Emulator (if you don’t have a phone).

Yesterday I got the first two bits working with about 2 minutes work. All you need to do is install the OpenJDK. SUN Oracle Java is not available yet.

The bit that will need more work is the emulator. I think. Ye see, I grabbed the code for the Linux version of the emulator and followed the simple instructions to build it. Then I saw it was building for i386 and of course the RPi is ARM-based. Damn.

A bit of poking around and I realised we were almost in a recursive loop. I was running ARM Linux in qemu i386 emulator on a Virtual Machine and I was trying to run an ARM emulator inside a another qemu i386 emulator inside that. Yes my head exploded too.

But then sense prevailed and I realised that Android is ARM and RPi is ARM, so do we need an emulator at all, or just an Android image compiled for ARM11 inside some sort of wrapper/container?

As an old Embedded guy I should be all over this but I’ve forgotten more than I ever learned about cross-compiling and building OS images. Anyone have any ideas on where to start? I popped a question on the relevant App Inventor Google Group too.

Of course all of this may be moot if the 256MB of RAM and 700MHz CPU is not enough to support all of this. But it’s worth a try.

Huge mistake by Google with Earth on Android

Today Google released Google Earth on Android and it sounds impressive. But they have made a huge error of judgement in the release. It only runs on one phone, the Google Nexus One. 

I have just tried it on a G1 with OpenEclair (a community version of Android 2.1 which runs on the Nexus One). It installs but refuses to run. The only app of 30+ that I have tried which has failed to do so.

Quite apart from compounding the negative message they are sending to other Android phone vendors with the Nexus One launch itself, it looks like they are repeating all the mistakes of J2ME.

Android was supposed to be the realisation of the “write once, run anywhere” promise made by Sun for Java in 1995. Fragmentation of J2ME on mobile turned it into an unmanageable mess with software vendors having to generate potentially hundreds of variations of their apps for different phones. The alternative was to create lowest-common-denominator apps that worked everywhere but were totally hamstrung and ugly as hell.

Now here we are 16 months after the first Android phone and it is happening all over again. Millions of G1, Hero, Galaxy and other Android devices were sold in 2009. All of them run Android v1.x software. None of them can run Earth. None of them can run the mobile browser version of Buzz.

Google will tell you that it’s the handset vendors job to keep the firmware up to date. I’m a punter, I remember what it’s like to wait for the Vodafone branded version of my Nokia N70 software, months after Nokia released it. It was annoying as hell with the operators then, it is just as annoying with handset vendors now. 

If I buy an iPhone, my apps just work. Ok, they may not have any smut in them, but they work. If I buy a DVD, it works. If I buy almost any Windows application, it will run on W2K, XP, Vista and Win7. That’s OSes spread over an 12 year period. 

If I install Google Earth on a Motorola Droid I bought in December, it won’t run.

Of course OSes have to improve and evolve but Android has both backwards and forwards compatibility breakage. Apps written for v1.5 may not run on v2.0 and apps written for v2.1 won’t run on v1.5.

This is a really really serious problem. Fix it Google or you will hit a brick wall in 6 months time when there are 40 handsets running 400 different firmwares and app developers and punters head back to the stable predictable iPhone platform.

I know I have re-considered my next Android device. Whilst Google might be happy that I would now default to the Nexus One since I know it will get the most support (as the G1 did before it), it does not bode well for other manufacturers supporting Android. With Samsung launching Bada and Sony Ericsson trying to support Android, WiMo and Symbian, it’ll be a brave person who buys their Android phones.