The age of the mobile web is here

This is it. If there was any doubt the future of handheld devices was the mobile web, it should be laid to rest now. As a strategy for allowing 3rd party developers to write applications for the iPhone, Apple has embraced the mobile web. And they plan to support all the ‘Web 2.0’ standards – which is just another way of saying that the mobile browser’s DOM will be predictable, and that Javascript will work as expected. Why won’t it, after all, the ‘mobile’ browser is a full-fledged desktop version!

If any of you have ever tried to develop mobile web-apps that used AJAX (esp. through the use of the popular AJAX libraries for the purpose – Prototype/Scriptaculous or Dojo), you know what I’m talking about. None of the mobile browsers really work well at all. They are all broken in some way or the other – and to add to the fun, they’re broken in different ways.

So – how is Apple going to fix the issue? By side-stepping the mobile browser entirely. Just take a desktop browser and make it available on the mobile. Perfect! And this is Apple’s official strategy for externally developed applications! So the critical mass is ready to happen…

And this will also see the beginning of the end of the walled-gardens of the carriers. If they don’t own the access to mobile applications, then they can’t control it. The reason they do control it, is that for the most part, no one wants to download and install things on their phone. Either they’re not technical enough, or things break after you install the wrong or badly developed application. So most people just use whatever is ‘on-deck’. And those applications are completely controlled by the carriers. No more! If the mobile web becomes popular, that’s the end of that!

Yet another way the iPhone will change the world.

From freedom languages to Java (and back again?)

Recently, I started working with Java again. I had little choice in the matter, really, since its for an upcoming product in the mobile application development tools space, and I’m focusing on the Java Micro Edition area. I’ll have more to say on this skunkworks initiative another time. (Watch this space, and all that).

I’ve been using mostly other languages in the recent past, Ruby, a little Python, Common Lisp, a little Haskell. But mostly Ruby. And it seems that having stayed Java-free for about two years has made me really rusty. That apart, this time around Java started out feeling annoying, and morphed into being mostly amusing. In an annoying way. The question I constantly have to tell myself to refrain from asking (out loud, and to the world in general) is – “Why can’t the bloody runtime figure this out for itself? Why do I have to type this extra (vestigial) code?”

In any case, working on the new Java Micro Edition platform again is nice – reminds me of a project I did at college – and of simpler times… 🙂

Java Micro Edition development – annoying emulator error

After a long time, I recently started playing with the Java Micro Edition again. Many years ago, I had downloaded and installed the Wireless Toolkit from Sun’s website (then in beta), and had hacked together common mobile games – snake, hangman, and the like.

So, when I downloaded the toolkit this time (v2.5 now), it was annoying to find that I couldn’t even seem to run a basic midlet without the emulator barfing at start up time, with an inexplicable ‘Uncaught exception java/lang/ArrayIndexOutOfBoundsException’ – no line numbers, nothing. The emulator screen wouldn’t list the midlet name either, so clicking on the soft button would simply print the same exception message again.

Google was of limited help. More annoying.

Finally, I just played around with different configurations during launching the midlet, and when running it in “class” mode (you have to specify the midlet class), it seems to work.

So there’s a work-around for you.

Usability and Mobile Devices – Part I – The Issues

With the kind of attention given to usability of regular desktop or web-based applications (sic), is it any surprise that most mobile applications are downright annoying to use? Many reasons contribute to this sad state of affaris – general lack of User Centric Design and Interaction Design awareness, applications being written for the developers themselves (as opposed to regular or specific users), a philosophy of miniaturization rather than careful thinking and planning of the application UI and technical limitations. The one that causes me the most amount of frustration is the indifference.

Nothing new here – this is the same indifference that causes you to reach for a nearby rock to lob into your computer screen. The fact is, given the much smaller form factor – smaller screen, smaller buttons and the associated painfully slow text input, potentially single-hand operation, potentially flaky network connections, slower processors for some older models, no mouse (with black-berry type devices) – the need for carefully thought out, user centered design is even more important. On top of these issues, some mobile browsers only support vertical scrolling, devices are different in soft-key placement and use, users have to often pay by the byte for bandwidth used – all add to the overall problem. These issues only serve to lay more constraints on the application designer. And yet, most mobile software development teams don’t seem to care – and they treat their users with the same disrespect they treat PC users.

I plan to write a series of articles that address a few of these issues – and how to design better interfaces for mobile devices. Not too much in these thougts will probably be original – but will essentially be applied user-centric design priciples for mobiles. Hope they help!