Tag Archives: android

On second thoughts…I’m glad I stayed with webOS

Source: palm.com

I posted quite a while ago about how I was switching to Android from webOS. I never actually did, and I’m very glad of it.

That was right around the time that the HTC Droid Incredible was getting all the hype in the Android world. It was the studly new favorite kid on the block: its specs were amazing (at the time) and it was on Verizon (which I have with my Palm Pre Plus).

As is the way with Android, the Incredible has since been eclipsed by the Droid X (also on Verizon). And I’m sure that in another month or two (or perhaps a week or two) there will be another amazing device to take it’s place.

Android devices are at the cutting edge as far as hardware goes. That’s great if you happen to have the newest device. But it also means that you’re almost guaranteed to be outperformed by the next device in a couple months. And don’t even get started on which devices are stuck with Android 1.6 or 2.1 and which ones won’t even be able to run Android 3. It’s a mighty competitive and fragmented world.

As far as hardware goes, then, the iPhone 4 is putting up some good competition. It’s a great device. The poor Palm Pre and Pixi can’t even compete any more with iPhone or Android.

But the reason I’m glad I stuck with my Pre isn’t the hardware. It’s the OS.

Take a look at PreCentral’s post today, “What switchers miss from webOS.” Seven of the nine points describe things about webOS that are superior to Android–they have nothing to do with the hardware at all. My personal favorites are universal search, gesture-based navigation, and Synergy.

  • Universal search is super easy and really powerful: I can search my contacts and apps just by starting to type. Throw in direct links to Google, Google Maps, and Wikipedia and it’s just perfect.
  • Gestures: Once I got the hang of these, they became a bit of second nature. I don’t have to move my finger up to the top of the screen and tap a small “back” button. I just swipe my finger back across the bottom of the screen (where it already was anyway). It’s a much more fluid system, less prone to errors.
  • Synergy: All my contacts from Gmail, LinkedIn, and Facebook are all there, linked together. And seriously, what’s cooler than seeing my friend’s most recent Facebook profile pic on my screen when he calls?

I recently got an iPad. Ostensibly it’ll be a tool for reading e-books and taking notes in class without having to carry around my heavy HP Pavilion laptop. At the moment it’s more of just a toy. But one thing that has really struck me (again) is how beautiful the OS is. The apps have a consistent look-and-feel and they work well together. It’s a pleasure to use, and it does warrant the adjective “magical.”

webOS is getting quite close to this. The interface is very fluid and intuitive (in several ways more so than iOS). That consistency doesn’t always transfer to all the apps I have, but they do a pretty good job on the whole.

I’ve been using a Motorola Droid at my work for some mobile apps we’re developing. While it’s a powerful device that is (sometimes) faster than my Pre, the OS just isn’t as nice to use as either webOS or iOS. It feels like Linux. It’s still rather raw, and it seems like it was built for engineers. I’m an engineer myself, so I understand that. But when I’m using a mobile device, I’m doing it to have a fluid, pleasurable experience with my media on the go, whether that’s email, Twitter, web pages, or YouTube.

My Palm Pre is still slow. It still has a small screen. It’s still plagued with GPS issues. But I’ve delved a little into the Android world and found out that the grass isn’t as green there as I had thought.

I’m content to stay the course and see what great new things are coming for webOS this year.

Why I’m switching from webOS to Android

HTC Droid IncredibleI’ve been using the Palm Pre Plus on Verizon Wireless since February this year. I really enjoy the operating system, webOS. And the hardware (once I got used to it) isn’t bad. It’s relatively lightweight, easy to hold, and overall a nice-looking device.

But the more I think about it, the more I’d rather have an Android. Here’s why.

The app paradigm

webOS is stuck in the app paradigm. So is the iPhone. Android isn’t, especially with the HTC Sense UI.

When I turn on my phone, I’m looking for information, not apps. My phone comes with me everywhere and ought to know my context. I’m not turning on my phone to open an app. I’m turning on my phone to accomplish something–to get some information from my friends, to see what my next tasks or calendar items are, to determine whether I need to bring an umbrella.

In the app paradigm, I have to open a Twitter client and read updates. Then I open a Facebook client and read updates. Then I open my calendar and look at appointments. Then I open a weather app and check the day’s forecast. All I really wanted was the information, not all the overhead of opening and closing apps, scrolling through and searching for the relevant things I wanted to know.

I don’t want to see minimized cards with some apps. I don’t want to see an array of pretty icons. The app paradigm is simply too inflexible and too siloed to provide me the information I want in the way I want it.

Hardware

Let’s be honest. As cool an operating system as webOS is, it’s confined to hardware that is all but antiquated. Small screen, slow processor, a finnicky keyboard that was only recently fixed.

Current Android devices are so much faster and more capable than current webOS devices. While rumor has it that hardware improvements are coming, I want a phone that’s up to snuff in the market today. A 500 MHz processor powering a small 3G phone can’t compete in this market anymore.

Geolocation

This is both a hardware and a software issue. Admittedly, the GPS experience on non-Verizon apps is spotty at best. It’s the unfortunate truth that the missteps of the carriers of webOS devices have tarnished its image in the location realm. Whether it’s caused by hardware limitations or carrier restrictions, the fact remains that geolocation on the Palm Pre leaves much to be desired.

Turn-by-turn navigation is only available on the Pre if you’re willing to shell out a few extra dollars a month for a subscription fee. Android phones come with turn-by-turn navigation by default at no extra charge. That, combined with the inherently better location capabilities of Android hardware, is compelling by itself.

Innovation and community

webOS has a very strong community. I have no complaints there. But the platform hasn’t garnered the attention of many developers outside that community, meaning that the app selection is extremely limited. There’s no Yammer app, for example (something that I desperately need). There are few Google apps for webOS (Maps and YouTube are the obvious exceptions).

Google is innovating incredibly fast with the Android platform. Android 2.2 brings incredible speed improvements across the board. Palm is in the middle of an acquisition by HP, so I’ll forgive them for the time being. But acquisition notwithstanding, innovation in webOS has been a slow process. Some are optimistic that innovation will improve with the better corporate backing that Palm will get from HP. I’m more inclined to run and develop for a platform that already has a proven track record of adoption and improvement.

Conclusion

Perhaps I’m being pessimistic. Perhaps I’m too easily distracted by new, shiny toys. But I’m more than likely going to make the switch to Android and devote my energies to that platform.

I still hope for the best for webOS. It is an awesome operating system with a lot of potential, but that potential has yet to be realized. Hopefully the new deal with HP will provide the necessary boost to get webOS onto its next wave of innovation.


UPDATE: I should note (as is duly apparent in the comments now) that I’m not yet completely sold on the idea of switching to Android. Feel free to leave your thoughts about either platform. Why should I or shouldn’t I switch?

Adventures with PhoneGap

Palm Pre, Motorola DROID, iPod TouchI’ve been working with PhoneGap this week to create a simple geolocation app. It’s a framework for creating mobile applications in HTML, JavaScript, and CSS that will run on all the major platforms. You write your application and reference the APIs that PhoneGap provides. Then you simply drop your HTML and JavaScript into the various platform-specific template projects they provide and compile it with the platform’s native compiler. Simple as that.

But the devil is in the details. Every platform and device has subtle differences that make cross-platform development painful. There are even differences between how an emulator and a device run the application.

I’ve been testing on three platforms: webOS (Palm Pre Plus), Android (Motorola DROID with Android 2.1), and iPhone OS 3 (iPod Touch).

Here are a few of my frustrating findings:

Notification: alert, beep, vibrate

First off, webOS doesn’t support the alert() command at all. Android and iPhone do, in the typical fashion.

Beeping is fine on the devices themselves (the Motorola DROID even says “Droid” when you call that function). But the Android SDK emulator kills my app when I call it.

Vibration works on Android. I assume it also works on the iPhone, but I only have an iPod Touch at the moment, and it doesn’t have a vibrator in the first place. The Palm Pre won’t vibrate unless the package name begins with com.palm. Obviously for testing purposes it would be fine to label your app as coming from Palm, Inc. itself, but that won’t fly if you want to distribute the app. So no vibration on webOS. And can you guess what the iPhone simulator does with the vibrate() command? It makes the app hang. Go figure.

Moral of the story: Alert, beep, and vibrate won’t work reliably if you need to support every platform and don’t want your code to break in an emulator.

Location services

The webOS and iPhone simulators both show their location as the headquarters of their respective companies (Sunnyvale or Cupertino). The Android simulator doesn’t even provide location data, so it’s utterly useless for testing in that regard.

My Palm Pre Plus (running on Verizon) can get its location relatively accurately when I’m running it on 3G (even inside my office). Not so if I’m on the WiFi. If I get a fix at all, it’ll take a long time and may be quite inaccurate. (Note that this is the behavior I get everywhere in webOS, not just with PhoneGap.)

The iPod inexplicably thinks it’s in Lilburn, Georgia. For comparison, I’m in Provo, Utah. Only 1,927 miles off. Google Maps on the iPod gets the correct location, but not PhoneGap.

The worst of my problems, though, is the Motorola DROID. More than half the time, my app can’t find its location. It doesn’t matter whether I’m on 3G or WiFi, inside the office or out on ground level. When I compile and run the app immediately after I’ve changed something, it usually seems to get a location fix. But when I subsequently run the app (whether connected to the debugger or not), it fails to get the location. I’ve tried it on two different DROIDs and they both exhibit the same behavior. Google Maps and turn-by-turn navigation work perfectly–they find the location and track it reliably. But something between the phone’s GPS and the PhoneGap library is getting screwed up.

Device UUID

webOS and iPhone OS both return a useful UUID on the device.uuid property. However, Android (both on the emulator and on the DROID) returns simply the unhelpful “undefined.” My app needs to be able to identify users by the UUID of their device, which simply doesn’t work on the Android.

UPDATE: Android 2.2 (Froyo) returns a UUID as you would expect. Only problem is that hardly anyone has it as of now (July 2010), and a lot of older mainstream handsets won’t be getting it at all.

HTML Select boxes

This one really ought not to be a problem. But webOS won’t let you tap on an HTML select box inside a PhoneGap application. It’ll display just fine, but you can’t make a selection. Select boxes work fine on normal web pages. iPhone and Android both support the select box perfectly, including the native OS skins. No dice with PhoneGap on the Palm Pre.

EDIT: Ryan from Nitobi is working on a solution for this on webOS. You can read about it on his blog.

UPDATE: Ryan has fixed this now. See his comment below for the updated files for your project.

Conclusion

So. After wrestling with all of these issues, what have I determined?

PhoneGap is a really slick framework, and it makes it very easy to create a mobile app that is “write once, run anywhere.” But the actual implementation details get hairy, and even fundamental operations like geolocation services and vibration are not implemented uniformly across all these devices.

Caveat emptor.


For those interested, I’ve posted a few questions about these issues on Stack Overflow: