mobile

  1. Lies, lies, and Android’s stock browser

    While working on a responsive site that featured some CSS 3D Transforms, I found that, for some reason, clicking into a text input to type on Android 2.3 and below caused the automatic scroll to the input to exhibit a strange yoyo behavior. It would jump down about 300px too far, jump up a bit, jump down again, up one more time, and park itself a couple of hundred pixels south of the actual input location.

    After a ton of messing around, I realized that it was related to another bug: the stock Android Browser’s incomplete support for CSS 3D Transforms and transitions.

    Despite Modernizr reporting that it’s supported, Android 2.3 and below will in fact fail to properly perform a rotateY transform, instead performing a regular rotate. Additionally, the very presence of an element with 3D transition properties seems to cause the jumpy behavior on input focus.

    Because feature detection yields a false positive, I had to actually detect the version of Android being run via the user agent string, and add a class to the body as needed, so I could target it separately and force the fallback animation I’d written to kick in on Gingerbread, FroYo, and below (to be safe, I also added Honeycomb, since I didn’t have an Android 3 tablet to see if it worked on it).

    var ua = navigator.userAgent.toLowerCase();
    var isOldAndroid = /android [1-3]/i.test( ua );
  2. The Logical Fallacies of Modal Tasking

    So lots of tech blogs have people going through them saying that Windows Phone 7 and the iPhone don’t need multitasking, and pointing to an number of reasons why that may be the case. But let’s take a look at some of the common fallacies they tend to fall into…

    The I-don’t-need-it fallacy

    Need is a funny thing. You often don’t need something until you try it for an extended period of time. There was once a time when the average user didn’t “need” network speeds beyond dial-up. This changed as broadband penetration increased, and the concept of what was and wasn’t possible with the internet changed as a result. Now, suddenly, many can’t even imagine using dial-up speeds on their phone, let alone with their primary computer. Even people who are not all that tech savvy are finding more and more uses for their broadband connection. Utilizing more advanced functions and features of technology has a habit of trickling down into the masses as it gets refined. Where once video chat was difficult and esoteric, now it’s dead-simple with Skype and a webcam.

    The Windows-Mobile-has-multi-tasking-and-it-sucks fallacy

    A bad implementation does not mean a concept is inherently bad. As a former WinMo 6 user I always found their attempts at muli-tasking to be too clumsy and awkward to use, but this does not necessarily mean the concept of multitasking on a handheld is somehow inherently flawed. One might just as well argue (and many have fallaciously argued) that all nuclear power is bad because Chernobyl was bad. Implementation is not a reflection of the underlying concept. Even the best ideas can be half-assed, but this does not mean one should not strive to improve upon the idea in the future. WebOS is an ideal example of a well thought out multi-tasking paradigm which is not only intuitive, but it is simple enough to be grasped even by those who are not tech-savvy.

    The my-battery-life-is-short-as-it-is fallacy

    This is something which depends on use. A well implemented multitasking system makes it apparent to the user which apps are still running without the need of a seperate task manager program, thereby allowing simple control over how much power is consumed. Bear in mind that the majority of apps do not consume processor cycles when not actively performing a task, thereby having little if any noticeable impact on battery life. Indeed, you can even see this for yourself in that many Android handsets and sometimes even WebOS handsets have comparable battery life to the iPhone (sometimes even better). Additionally, jailbroken iPhones with multitasking do not appear to have any significant difference in battery life either. The myth of the dwindling battery is not something we need speculate on, it is something we can actively observe and measure, and it’s total bunk.

    The it-will-make-my-system-unstable fallacy

    System stability is an issue, but again, this is a matter of implementation. I’ve heard many people lambaste WebOS and the Pre for experiencing memory leaks often, but this is, contrary to popular belief, not a result of its multi-tasking implementation, but rather a result of poor garbage management by the OS, an issue which Palm has begun addressing with WebOS 1.4. Newer Android builds are also significantly more stable, and are now just as, if not more stable than iPhone OS. I believe this fallacy originates from Windows Mobile 6’s poor stability, and the fact that many assumed the instability of WebOS and Android were due to multitasking, as that is the common thread between the three, but correlation is not always causation, and the fact is that the latter two examples are far younger than iPhone OS, and therefore took a while to catch up stability-wise.

    The it’s-a-security-measure fallacy

    A security measure from what exactly? The iPhone App Store already has every app screened and reviewed at the code level. Nothing will get through that can spy on your activities without Apple’s say so. So what exactly is more secure about not having code-reviewed background capable apps on your phone?

    The I-only-use-one-app-at-a-time-anyway fallacy

    This is likely the most common one, and for good reason, so I will walk through it step-by-step:

    This is akin to saying you don’t need to learn how to drive because you don’t drive: it’s circular reasoning. You may currently use only one app at a time, but that is likely because you do not have the option otherwise to begin with. Additionally, this argument makes the mistake of assuming that using a multi-tasking OS is the same as a modal OS. Let me assure you, it is not.

    Let me start by explaining that app interoperability is a very useful thing. Being able to switch between multiple live apps with the swipe of a finger is a wonderfully useful thing, allowing things like crunching numbers on a scientific calculator and storing the results in a spreadsheet or a memo for later without having to open and close apps constantly.

    Additionally, whereas modal OSes such as the iPhone typically have modal notification systems, multitasking OSes tend to have less obtrusive notifications so as not to interrupt your current actions. This allows things such as receiving and replying to text messages while playing a game without having to exit the game, or seeing who called or texted you at a glance without stopping. This video is a great and humorous example of this.

    Finally, modal use of mobile applications makes your phone a tool. It is a Swiss army knife which you can whip out and take care of business with. Multitasking makes your phone an intelligent and aware entity. You see, the true fallacy behind this concept is not that you do not use more than one app at a time, for using multiple apps yourself is indeed rare. What many fail to realize, however, is that while you only use one app at a time, your phone has no such limitations. While you listen to Pandora on the bus with your eyes closed, your phone can notice that you’re entering within a preconfigured distance of your house after getting out of work, so it can alert you to get up and get off the bus before you miss your stop. Or it can notice that you’re driving by the grocery store, and you have items in your grocery list that you might as well pick up while you’re there, because your calendar’s clear for the rest of the evening.

    This particular example shows off some of the uses of the Android application Locale, which a location based app that can be configured to trigger nearly anything using extensible scripts, the most common of which are already written by other Android users and can simply be downloaded and implemented. This is something which is impossible on the iPhone without background services. You may think this is a minor detail, something you will not need or use, but the reality is that this goes a long way toward making computers and technology ubiquitous. It is the hallmark of the age in which we do not have to use computers, because they will react to us, and to our needs preemptively without the need for us to constantly interact with them. In short, it is the future.

  3. Palm Pre: First Impressions

    So I’ve had my Palm Pre for about 4 days now, replacing the dinosaur of a Motorola which I used prior, who’s screen had cracked and which crashed and froze on an almost hourly basis.

    The main appeal of the Pre, for me, was WebOS. As a web programmer, dangling the carrot of coding embedded apps with my existing skill set is a tempting one (and the same reason that I kinda liked Konfabulator/Yahoo! Widgets). But I’ll get to my experience thus far developing for it in another post.

    The physical phone itself is very nice, especially when it’s closed. It’s just satisfying to hold, and doesn’t feel bulky at all, even in your pocket. The screen is only a tiny bit smaller than the iPhone, a difference which I can more than live with, and I like having a physical keyboard. I dislike the portrait keyboard though. Every time I use it I can’t help but feel a little cramped, and I have small hands to begin with. A Landscape slider would’ve been way more comfortable. The keys themselves feel a bit too soft too. I’d have preferred harder keys, as I fear these will wear down much faster, since the portrait slider configuration means they’re smaller, and I have to hit them with my fingertips. The Ringer Off switch is great though, especially for movies and for the bus (I don’t like waking sleeping people on the express bus with my phone, I think it’s rude).

    The multi-tasking is, by far, the best part about the phone in my opinion. The ability to smoothly move to, use, and control apps feels very satisfying and almost cathartic. Synergy, which was also heavily touted, falls flat in my opinion though. Don’t get me wrong, I loved just inputting my Google account info and being done, but as others have mentioned in reviews, it imports ALL of your Google and Facebook contacts, and only merges them on name, not on other reasonable data (like screenname). For me, the biggest annoyance was that it imported my AIM buddy list, which has 200 buddies, half of which are either inactive or I no longer speak to. There’s no option to disable this either. If you sign into AIM, your buddy list is just dumped into the phone. I’ve already organized my Google contacts, and culled my AIM buddy list as a result, and I’m just not going to add my facebook account, but I’ll get to that in a second.

    You see, my primary problem with the Contacts list is the inability to organize contacts by group. So while even 7 year old phone have friends, family, etc groupings, the Pre does not, even if they exist in your Google contact list. I can only group contacts by Company, and even then, I can’t collapse that group, so I have all my former coworkers taking up tons of space at the top of my contacts list, with no way to move them out of the way or close the group if I don’t use it often. Don’t get me wrong, I could just search for my contact, but I don’t always want to have to open the keyboard to do so, especially when the fix for saving much of the room would simply require replacing the “divider” widget, with the “collapsible divider” widget. It’s literally a 2 second god damned job.

    There’s more but that’s all I really wanted to talk about at the moment. I just finished working on version 0.1 of the app I’m writing today, so I’m kinda happy about it so far. I’ll describe it a bit later on when I have some more free time.