Smashed Nexus One, RIP

After having survived being drowned, my Nexus One has finally succumbed to my (unintentional) abuse. It fell off my night stand this morning and landed face down exactly wrong on the tile floor, shattering the glass touch screen. To be fair, the N1 is still working, it’s just that I’m in serious danger of glass splinters and sliced fingertips using it.

IMG_0094

This happened just a day after getting the latest Gingerbread. Arg! I will miss this phone while I “suffer” with my iPhone 3Gs until I can get a Nexus S shipped to me in Ghana or when I am in the UK. For all its cache and cool hardware, the iPhone doesn’t do the things I love in Android:

  • Background services (used to great effect by Google Listen and Google Voice) not just multitasking
  • Unobtrusive notifications
  • Custom status icons (WeatherBug and BBC do a great job with these)
  • Native SIP client support (gingerbread)
  • Unlocked without jailbreak ultrasn0w shenanigans
Advertisements

Replicating My Key Android App Features on iOS

PwnTunes-IconPwnTunes (€10) == Android Mass Storage USB Device

Android is mostly cloud-focused. You don’t sync it with a PIM or iTunes. If you want to put music on the Nexus One or get your pictures off you can just plug it into a computer. Android presents itself as a USB drive.  You can simply copy files back and forth between the device and the computer. Incidentally, this is exactly how the Kindle and my Nikon D200 work as well.

PwnTunes is a Cydia app which requires that your iPhone is jailbroken but it pretty much replicates the Android behavior. I was willing to pay €10 for this convenience because I’m an iTunes rebel. I buy my music from Amazon’s MP3 store and I don’t even have iTunes installed on my Windows partition where I spend the vast majority of my time.

PwnTunes Update

PwnTunes is horrible. It does not work well at all. Unfortunately, there is no substitute for iTunes for i-devices.

bria-iconBria iPhone App ($8) == SipDroid

I have a SIP account on Callcentric which allows me to make calls in the US without any international phone charges when I’m abroad. My SIP account is also tied to my Google Voice number so when I get a call on my main USA number it rings through to me anywhere in the world provided that my phone has data service. Bria is working really well for me so far. I’d say that the background service and notification features of Android  is more favorable to this sort of thing. It does seem that iOS will occasionally decide to kill Bria, I think. It’s hard to tell.

gvoice-iconGoogle Voice == Google Voice

Apple has approved the Google Voice app for iOS so it is now available on the iPhone. Incidentally, the iTunes store on iOS makes this much easier to install than the Android Market because if your SIM is not on one of the whitelisted carriers in Google Market, Google Voice doesn’t appear. The iTunes store has no such issue.

Podcaster ($2) == Google Listenpodcaster-icon

Google Listen is a podcatcher which downloads and caches podcasts over the air. It’s a little flaky but it mostly works. It’s another one of the apps that is hidden in Google Market for some carriers. Podcaster does the same thing for iOS and has a much nicer user interface than Google Listen. I really like Podcaster but my main complaint is that the scheduled polling of podcasts doesn’t seem to be reliable when Podcaster is running in the background.

kindle-iconKindle == Kindle

On the one hand this is essentially the same reading experience as the Android version. On the other hand, the Android version is more feature-ful because of the subscription content struggle between Amazon and Apple. The iOS version of Kindle cannot receive periodical subscriptions.

 

nytimes-iconNY Times == NY Times

Nothing to see here. The Android and iOS versions are nearly identical if you allow for the differences in standard interface widgets on the platforms.

 

gtranslate-icon

Google Translate == Google Translate

Again this is the same app on iOS as on Android. It’s very cool if a bit Eurocentric. Don’t expect it to hear and speak Arabic or Asanti Twi. On the other hand it is great at hearing and speaking French, Spanish, German and Dutch. It speaks Danish but can’t hear Danish and it hears Afrikaans but can’t speak it. Something interesting is going on there.

Bonus: Flickrflickr-icon

iOS has a cool Flickr app that will background upload photos to your Flickr stream and can also edit tags and sets in Flickr as well as browse your friends Flickr streams. Nicely done.

 

Bonus: OneNote

onenote-icon

I have OneNote and use it off and on. OneNote 2010 syncs with Microsoft’s cloud storage and this cool little iOS app also syncs with Microsoft’s cloud storage. If you take notes on an iDevice they show up in OneNote on Windows and vice-versa. My main complaint is that syncing a notebook for the first time is pretty slow over 3g. Jury is still out on this one but I’m giving it a whirl.

Nexus One Came Back to Life After a Soaking

I’ve had my Nexus One in a bag of rice for the last 5 days to draw the water out of it. I put the battery back in this morning and it booted up with a working touch screen and no evident ill effects except that it has decided to erase all my personal data and apps.

All of the data on it is synced onto cloud services and onto my iPhone and desktop so nothing is lost. It is a big hassle to get apps back on the Nexus One though because the Android Market store has some really unfortunate carrier blocking. Some apps such as GMail, Google Listen, Google Voice and Amazon Kindle do not appear in the store unless the carrier identified by your SIM is white-listed with Google. This is one thing that Apple seems to get really right. The iOS App Store seems to work regardless of locality or carrier.

I’ve decided to stick with iPhone for a while. iOS 4 is a significant improvement. It seems to achieve most of the key benefits that Android has while retaining a slicker GUI and avoiding the glitchy touch-screen registration issues and periodic hangs that I experience regularly with Android 2.2 on the Nexus One.

Drowned Nexus One

Last Thursday, I was caught out in a serious deluge of a storm and was thoroughly soaked to the skin. When I got home, I pulled my Nexus One out of my pocket and watched in horror as the screen flickered and died. I have the Nexus One in a bag of rice hoping it will dry out and revive but I can say this is one area where the iPhone design is better. My iPhone 3Gs was more water resistant. I was drenched in a similar way in a rain storm with my iPhone in my pocket and it survived without any water damage. I chalk this up to the don’t-open-me sealed design of the iPhone case vs the pop-open Nexus One with a removable battery. I do seem to manage to destroy phones at about the one-year mark with alarming predictability, though, regardless of manufacturer.

Time to get another phone and quickly. I’m willing to pay for an unlocked device rather than wasting my time futzing around rooting devices. That’s why I got the Nexus One in the first place. On the other hand, I’m really, really irritated that Gingerbread is still not out on the Nexus One. And the price at the Telefonika in the Accra Mall for a new Nexus One is roughly $900! At the current exchange rates, the price for a new unlocked iPhone in Ghana is nearly $1500! RIM BlackBerry phones carry a similar premium and are immensely popular here.

photo

As I’m unwilling to pay $1500 for a phone if I can avoid it, I find myself having to pull my pre-Nexus One iPhone 3Gs out of a shipping crate so that I can get it working here in Ghana. My wife has an AT&T BlackBerry which AT&T unlocked without comment but AT&T will not unlock an iPhone for any reason. (FWIW, I am still an AT&T customer. My company pays for a full monthly data plan with international roaming but I normally use Airtel in Ghana.)

These are not reasonable prices in my world. I have an iPhone locked to AT&T and running iPhone OS 3.2. What I wanted was iOS 4.2.1 but I wasn’t going to shell out $1500 to get it. So, despite my desire to be a good little consumer and my willingness to pay something of a premium to get an unlocked phone, I found myself researching how to jailbreak my iPhone 3Gs. It took me some time that I’ll never get back but this is what I came up with:

  1. I used Pwnage 4.1 to build a custom 4.2.1 iOS image without the baseband update from iOS 4.2.1. To do this you need the iOS image and you have to add a iPhone 3Gs 4.2.1 bundle to Pwnage. This is important because the baseband I had is unlockable using UltraSn0w but the baseband from iOS 4.2.1 is not and the solution to that problem is flashing a baseband firmware from the iPad which makes it impossible to go back to a stock iOS image.
  2. I kept getting an error from iTunes when I tried to flash the firmware onto my phone. It turns out that I needed to have iTunes 10.1 and I had whatever comes with Snow Leopard because I don’t actually use iTunes. But after doing the update to the latest iTunes 10.1.x, it worked.
  3. Then I used greenpois0n to jailbreak the phone because it seems to be the only jailbreak for iOS 4.2.1 that works without having to tether the phone to a computer for every reboot..This worked on the second try.
  4. Basically, what I had at this point was a stock 4.2.1 image with an older baseband and an extra green icon called “Loader”. What Loader does is install Cydia on the root partition and it failed because the partition was too small. Back to step 1, this time I created an image with a 1024MB root partition.
  5. Once the phone was jailbroken with Cydia on it, I was able to use Cydia to install UltraSn0w which unlocks the baseband for any SIM. Finally my phone was up and running on Airtel.

I’m not very happy about this state of affairs but there it is. I am happy to have a working phone again.

Annoyance: Android Market Regional App Availability

The Android Market Place has regional app availability which means that if you live or travel outside of North America and the EU, you don’t have access to some of the best apps like Google Voice, Google Listen, GMail App updates, Amazon Kindle App and Skype to name a few.

It turns out that the regional restriction is by carrier but Google isn’t looking at where your data is coming from. They are looking at the carrier identifier on the SIM. The restrictions aren’t technically regional, they are by carrier.

If I put my AT&T SIM in my phone in Accra, I see the USA-only apps and can download them over WiFi. Unfortunately, even once they are installed apps that I have to install using my AT&T SIM don’t seem receive updates when I am using my Zain SIM. It seems that I have to periodically switch SIMs and check for updates.

It’s possible to spoof the carrier id and fool the Android Market  if you root your phone but I really don’t want to spend that kind of time and energy beating on my phone. I’d like it to just work, please.

The user experience for this is really bad. It feels like a bug with the phone because Android Market just says that the software was not found when you follow a link or QR code for a restricted app. Couldn’t it at least say something like “We’re sorry. The publisher of this software has not made it available for your carrier. Click here to request it to be made available.” This is the Amazon approach when a book is not available for Kindle. At least that is mildly cathartic that you get to complain to someone.

Is this carrier whitelisting of apps really necessary for the Android Market? Really?

Can Google Sidestep Oracle Patent Payouts with Mono/C#?

android-monoOracle has sued Google over patent and copyright violations related to Google’s use of Java technologies in Android. Oracle acquired the Java IP as a part of its acquisition of Sun Microsystems. The details are somewhat different but this has the same general flavor as when Sun sued Microsoft over its non-conforming Java runtime and J++ language compiler. That lawsuit was based in contracts law because Microsoft did license Java from Sun and violated the terms of the license. In this case, Google has attempted to sidestep the licensing requirements of Java with their Dalvik VM. Once could reasonably argue that the technical basis was similar. Both Microsoft and Google want to achieve significant performance improvement and platform integration over a vanilla JVM at the cost of incompatibility with the Java standard. It’s not entirely clear that Davlik actually achieves superior performance, though. I have to wonder if the stack-based VM concept was incidental to the goal of making an end-run around J2SE runtime licensing requirements.

One intriguing—if a bit self-serving and improbable—proposal has been floated by Miguel de Icaza: Why not just replace Dalik with Mono, the free and open source implementation of Microsoft’s .NET? The Mono runtime is LGPLv2 and the class libraries are MIT licensed. Additionally the .NET Micro edition has been placed entirely under the Microsoft Public License which is a BSD-style license with an explicit patent grant. The Microsoft Community Promise explicitly indemnifies patent claims against anyone wishing to implement C# and the CLI and unlike Sun’s patent grant for Java, embrace-and-extend is OK—you can implement a superset of the C# and CLI features and you are still covered.

Google definitely has the wherewithal to migrate Android from Dalvik to Mono if they want to. They could make it a seamless transition and even migrate the bytecode of existing Dalvik (or Java) apps to IL. They could also provide a tool to migrate projects from Java language to C# as Microsoft did. Other implementations exist.

I think it would be pleasantly symmetrical if history repeated itself. Sun’s lawsuit put the kibosh on Microsoft using Java the way it wanted and essentially gave birth to C#, the CLI and the CLR. It would be ironic if history repeated and Android just adopted Mono as its runtime. The road is much easier to tread this time around because a fully open source implementation already exists and it has already been ported onto Android and bytecode-to-IL and Java-to-C# tools exist and are mature.

Cool Android Battery Use Diagnostic

I just discovered a utility inside of the “About” component of Android settings which tells you what is sucking up your battery life. Very cool.

Settings –> About phone –> Battery use

power-diagnostic

%d bloggers like this: