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

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

Sipdroid Error “Registration failed (404 not found)”

When I was first configuring Sipdroid, I kept getting a notification from Sipdroid “Registration failed (404 not found)”. I thought this meant that Sipdroid couldn’t find the pbxes.org server and I tried configuring it to talk directly to my SIP service (which didn’t work, either).

It turned out that the 404 error was extremely misleading. What it was really indicating was that my Trunk configuration in pbxes.org was non-functional. I had not correctly configured the Trunk to correctly access my SIP account. Once I read the instructions from my SIP provider and got the trunk to authenticate the 404 error disappeared.

The error should really be something more like “401 trunk not authorized”.

Google Voice + Sipdroid = Transparent Free International Calls

  Android is really exceeding all of my expectations. One fantastic feature of the Android platform is that all of the apps are on an equal footing. Third parties can hook into Intents and even replace whole features. Even the dialer.

Enter Sipdroid which is an open source SIP IP phone protocol client for Android. Sipdroid can either replace the dialer entirely, replace it when you have data network support or just hook the dialer so that when you dial a number ending in + with the built-in phone app, the call is made via Sipdroid.

Sipdroid works best with a freemium virtual call routing service, pbxes.org. Pbxes.org appears to be based on Asterisk and is sponsoring the development of Sipdroid. Google’s Gizmo5 “Guava” app is based on Sipdroid.

Things are tricky to set up mostly because of a derth of documentation and misleading error messages, but here is the gist:

  • Sipdroid talks to pbxes.org (theoretically not required)
  • Pbxes.org has one or more “trunks” which are logical phone lines. The trunk is a way to connect your 3rd party SIP phone account. (Pbxes will suggest some if you don’t already have one.)
  • Pbxes.org has one or more extensions and inbound and outbound routes. At its simplest, there is one trunk, one extension, one inbound route.
  • If you want to be able to send calls, then Pbxes needs an outbound route.

Sipdroid has several codecs so it can automatically scale the call quality to the available bandwidth. in the screenshot below, I have a call over Edge at 11Kb/s using thespeex codec.

sipdroid-incomming

sipdroid-in-progress

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

This is fantastic because what it allows me to do is have a SIP phone number in the USA that forwards calls to my phone when I am overseas as long as I have data service from the GSM network or from WiFi.

Voice Makes it Transparent

I want something even better. I want a single voicemail box and I don’t want people to have to know to call my SIP number. I want it all to be transparent. The key to this is doing an unconditional forward of my old number to Google Voice.

While pbxes.org offers basic voicemail service and will even email you an audio file, what I really want is to use my Google Voice voicemail.

You need a Google number and then use Google Voice to ring the SIP number and my Skype-out number, too. Google Voice says that it will only forward SIP calls to Gizmo5 accounts but it will actually forward to anything that has a dialable phone number.

call-routing

google-voice-routing It’s important to set the call timeout as long as possible on your SIP service to make sure that Google Voicemail will kick in before a network error does. Also, be careful not to create a dialing loop. If you are forwarding calls from a number to Voice, don’t have Voice dial that number. (See above where Voice is not dialing my AT&T number because that is what is forwarding to my Google number.)

Once I Google Voice is set up to forward to Sipdroid (and Skype), I can turn on forwarding of my old telephone number to Voice anytime I am going to be out of the country and I present a single number to the outside world and people can call me overseas without incurring any long distance charges. It is totally transparent to them. They don’t have to know about any of these numbers used to route the call.

Goodbye iPhone 3Gs, Hello Nexus One

nexus-one-logo

I have really enjoyed my iPhone and mobile Safari but AT&T and Apple will not unlock an iPhone for any reason. I am moving to Ghana and there is no way that I will be roaming with an AT&T international plan. It seems that iPhones are not yet sold in Ghana so I would have to try to buy an unlocked one in Amsterdam in transit or buy something in Ghana.

I couldn’t resist the new Google Nexus One. It was almost tailor-made for solving my problem. MTN in Ghana has 900MHz UMTS, which is supported by the Nexus One. And, of course, the Nexus One is sold unlocked.

Initial key selling points:

  • Unlocked
  • Can be tethered (via rooting or PDANet)
  • Integration with Google Apps
  • Multitasking
  • Not tied to iTunes or any other desktop software

Android is a Java-like VM called Dalvik which runs on top of a core Linux OS and some C libraries like WebKit and SQLite. I was definitely concerned that the phone would be sluggish or klunky. It is neither. It is fast and it is slick.

My initial impression is that this phone has everything that I loved about the iPhone and either has built-in or add-on fixes for all the things that annoyed me.

device

Initial observations:

  • Phone “activation” is dead simple. You sign in with a Google Apps, regular Google or Exchange account (or a combo) and you’re done.
  • This thing seems faster than the iPhone 3Gs.
  • WiFi performance is great and Edge (I’m still on AT&T) seems the same as the “3G” (which often falls back to Edge) performance I have been getting in my little slice of Washington, DC.
  • The Voice app is like Visual Voicemail on steroids. Yeah, sometimes the transcripts are bad but then you fall back to the same behavior as Visual Voicemail. Incidentally, you don’t need a Google number for Voice to work. It sets itself up with your carrier to replace the voicemail system provided by your carrier and you can turn it off if you want to go back.
  • Gadgets are a cool way to embed applications like calendar, weather and news and search right in your home screens.
  • The Google Market store for apps is well done and it’s a nice touch that there is an Amazon music store app.
  • Listen is fantastic at pulling down podcasts over the air and caching them. It also can pull them down in real time and I can still surf the web at the same time. On iPhone this wasn’t possible because the media streaming component of Safari is modal. You can’t do anything else with Safari unless you kill the stream.
  • I love that the alarm clock has a cock crowing ringtone.

I have been seeing more and more Droid phones popping up around town. This feels like the future.

%d bloggers like this: