Showing posts with label iphone. Show all posts
Showing posts with label iphone. Show all posts

Friday, February 26, 2010

Of Widgets and Apps

One of the primary advantages of Apple's approach to widget engine implementation was that their engine (Dashboard) was based on HTML, CSS, and Javascript, which appeals to a wider spectrum of web developers out there.

Widgets - the idea itself - is nothing new. They were thought up long ago as mini applications with very specific purposes. For example, one such widget might deal with displaying a typical six-day weather forecast. Dashboard's offerings included widgets such as Weather, Stocks, Clock, and Calculator.

A couple years later, when the iPhone debuted, there was apparently news that these same aforementioned widgets' iPhone app counterparts were originally written in a manner similar to the HTML/CSS/Javascript-based Dashboard widgets, but that within the six months between announcement and release, they were redone natively in Objective-C for performance.

But Javascript performance has improved remarkably in the few years since then, with the improvements in Javascript engines from Safari to Chrome to Firefox, and while Apple's stance on native webapps was put aside for the timebeing with the release of the SDK, the webapp idea still lives on in various online and offline forms in Palm webOS apps, Chrome OS apps, and even iPhone MobileSafari's webapps. And it will be interesting to see how further performance improvements increase the viability of the webapp, and by extension, expand development opportunities to a massive number of eager web developers out there.

Wednesday, July 15, 2009

Browser Sniffing on the Mobile Web

Browser sniffing holds a level of stigma in the web development/design world, as we have been spending years and years creating cross-platform, cross-browser sites that use more robust techniques of singling out browsers, rendering engines, or platforms as a last resort through our knowledge of what's supported - CSS conditional comments, JS object detection, and various tricks and (if needed) hacks both client and server side. It has long been our practice to create a solid separation of presentation, content, and functionality in a way that degraded gracefully (or more recently, progressively enhanced).

This has worked well on the desktop platform, from desktop workstations to notebooks to tablets.

The Age of Rich Mobile Computing

So the question becomes, what to do with the mobile platform. For years, there have been very basic mobile-specific pages for basic phones with tiny viewports and browsers that couldn't handle much more beyond HTML, with notable omissions of support in areas like CSS and Javascript.

But ever since the iPhone brought fully-featured mobile browsers to the mainstream, there has been this huge trend of companies creating iPhone-tailored sites designed for the width of their viewports, and guaranteed to work on W3C standards-compliant browsers, including Webkit-based ones like MobileSafari, and soon after the ones on the Android and webOS platforms, which currently also have devices with similar viewports. Consequently, these iPhone-tailored sites generally automatically work well with most modern smartphones with full browsers, effectively creating a second tier of mobile sites for smartphones.

For the iPhone initially, it seemed both sensible and insensible simultaneously that people were creating sites that fixed themselves to a specific viewport width. One of the great abilities of MobileSafari on the iPhone was that zooming on small screens was finally easy with the pinch gestures, so coupled with the full HTML/CSS/JS browser, there would be little reason not to experience the same full website used on the desktop platform. Even considering this, however, people still designed sites that negated the pinch zooming.

Still, with a smartphone version of the site, you would ideally be served the same information you need in a way that didn't require any zooming at all, because the user is still otherwise pinching his way into a zoomed out preview of the page that he can't initially read. But sometimes smartphone sites aren't thought out as well, and information or features end up missing.

In some cases though, desktop versions of sites are so mobile-unfriendly (Facebook desktop site) that we pretty much have to rely on mobile sites or native applications to access them on mobile devices.

But there's a lingering question that we may all face in the coming years - at what point is a device considered a "mobile" device and not a desktop computing device?

Drawing the Line at "Mobile"

In late 2008, I had this discussion in an iPhone development forum where I wanted to know how to allow a user to use a link to exit a mobile page back to the full desktop site, without cookies and without having the desktop site's mobile browser detection causing an infinite cycle between the desktop and mobile sites. In other words, just as many sites were doing, I was automatically directing all appropriate mobile devices to the mobile site, but wanted to offer an option to return and remain at the original version.

We came up with a solution, but not before having a heated discussion over whether browser sniffing on the mobile platform was a forgivable exception. My point was that most phones beyond the iPhone did not possess easy pinch zooming, and magnifying with a trackball one square block at a time was not a pleasant experience. Beyond that, there were functions most mobile devices could not yet handle so smoothly, such as click and drag, and general mobile-specific features like data detection (phone numbers, addresses for maps, etc).

But the best counter argument I heard that makes me reconsider is that the line between desktop and mobile computing is not as clearly defined as we think, especially if you think about the smaller 7" netbooks in the middle of the spectrum with screen resolutions in the 800x480 pixels.

It's possible this gap could shorten and fill over time with in-the-middle devices like these and other devices with smaller resolutions. For comparison, the iPhone family of devices sports a 3.5" 480x320 pixels screen.

It's also possible this gap might remain as sparse as it is today, if we assume that the 7" netbooks are roughly the smallest non-niche form factor the mainstream is willing to bear on a desktop platform with a two-handed QWERTY keyboard, and that today's smartphones with thumb-based QWERTY keyboards (hard and touch-based) are in the upper bound for mobile to remain pocket-friendly.

Ideally, we do want our fluid layout pages to scale down well to the current mobile category of devices, and not to serve and maintain special mobile versions of our sites. As it stands, the gap still holds, and for the sake of the user experience in the present day, this is how many of us will approach it. We'll see where the future takes us from there.

Thursday, July 2, 2009

Thoughtfulness Zen of the Moment 3

Probably one of the underrated parts of the third generation iPhone (3GS) is its digital compass, which may evoke questions about its utility until a user actually uses it on the road. The potential utility of this compass gave me some excitement when I saw the iPhone GPS navigation app demo by TomTom the day the iPhone 3GS was announced, because it completed the last requirement necessary to make turn-by-turn GPS work seamlessly - your car's heading.

Now, with location-aware devices coupled with a map like Google Maps, it was already possible to navigate with steps of directions and your currently tracked location. But as anyone who has tried driving with any navigational aid knows, knowing the orientation of the streets grid relative to your direction is immensely more useful than driving with north fixed as upward.

Unfortunately, the TomTom GPS navigation app is not yet released, but one of the most accessible sample implementations right now is in the bundled Google Maps application, which cleverly displays heading in the form of car headlight beams. Moment of zen.

Wednesday, July 1, 2009

The Global Inbox versus the Distinct Inboxes

When it comes to organizing multiple accounts on an email client, there are two major approaches - one is to send them all to a shared inbox, generally called a global inbox. How emails get filtered or sorted at that point varies, whether by folders or by labels. The other approach is to keep separate inboxes and sent/outbox/junk/trash folders for each mail account set up in the application.

Most desktop email clients offer the option of both inboxes global and separate, but it gets trickier with the constraints of the small viewports on mobile screens.

The way the iPhone OS has been doing it these past couple years seems to be consistent with the way the original iPods menus were done - you start a root level menu, and drill your way down (visually to the right) until you reach the level you wanted to visit. For example, on the original iPods, playing a song from the main screen involved: Music > Artists > Jack Johnson > All Songs > Upside Down, and going back (up one level) was done by the menu button (or the equivalent home button on the iPhone OS devices).

This was part of the foundation of the famed ease-of-use menu/clickwheel navigation of the iPods, and to the extent of the menu/home UI breadcrumbs, the iPhones and iPod touches. However, for tasks where switching quickly between two children-level items, heavily nested levels can hinder that. For example, one classic task is to switch between folders in two separate email accounts. From the first inbox, this requires going back two levels up emailone@someprovider.com > Accounts > emailtoo@someprovider.com > Inbox. That's four steps.



Now try this on the Palm Pre's webOS. For those maintaining separate inboxes, the accounts are listed in collapsed folder lists, so if both accounts's lists weren't expanded already, two taps for expanding both are required, after which both inboxes are just a scroll away from each other, and one tap for going back to the accounts list. If that's not enough, this mail client allows adding folders from various mail accounts into a global favorites list on the accounts list page, reducing even the need for a scroll.



The fact that there's a global inbox view while preserving the separate nature of the accounts ("All inboxes" on webOS) is a huge side perk, and actually excels beyond what many desktop applications offer. This is a shining example of a solid mail client implementation for both global/distinct inbox camps that scales well onto the mobile platform.