Thursday, February 8, 2007

Mobile Device Ramblings

Since my days of writing code for embedded systems in the early 90’s I’ve always had a soft spot for mobile devices.  My first experience writing code for mobile devices was a floating point library I created for the Palm OS for a time tracking application, this was a small C library, nice concept but I just don’t think it reached the fullest potential, next was in 1998 with my first HPC or Handheld PC running some early version of Windows CE, with a fold out keyboard and a of low resolution LCD black and gray display.  At the time we used embedded VB to write applications; it was fairly painful to write anything but the smallest applications, these devices never really took off.  Next was a collection of “smart-phones” with PDA like functionality, some had development kits but again these were very painful and you really couldn’t do too much other than manage lists and appointments.  Then around 2001 the world was changing for mobile devices with a new technology called WAP or wireless application protocol, the idea here was really cool, define your application in a set of XML documents using the WAP standard and it would run on any device that supported a WAP browser.  Well I learned the technology, built a few proof of concepts systems, but in the end this technology just didn’t turn into anything real.  An interesting side note on this is that although WAP seemed and still seems like a great idea, most phone or mobile device that people do “web-stuff” these days really have a full feature browser built in so all the experience learning WAP probably provides less than significant value today. 

Fast forward to 2003, hardware is really coming of age and cellular technology is starting to provide solutions for wireless wide area networks that are usable.  These are built into phone and cards that fit in your computer that act as modems as well as a new hybrid technology called the “Smart Phones” that not only provide voice service, but a platform for developing non-trivial applications.  So now we have devices that have decent computing power as well as some sort of connectivity.  With PDA’s up to this point some sort of external connectivity was required to synchronize data, now we have a device that can not only access web sites via built on browser functionality, but when networks are available they can synchronize data with the server to keep their data fresh.  I’m not really so much a Microsoft Bigot, but that is where the majority of my experience is so I can speak to that.  With the release of Windows Pocket PC 2003 and Pocket PC 2003 Second Edition and the Compact Framework we started to have a good platform where it made sense to develop business applications on a mobile application (this was possible before, but using tools like eVC++ and Embedded visual basic, the eVC++ probably really good at creating small, yet industrial strength PPC apps and Embedded VB…well lets just not talk about it…) 

So although the Compact Frameworks application was definitely a 1.0 release it did provide the basis to build real applications, in addition if you needed a non-trivial data store, SQL Server CE was an excellent solution, although it’s footprint was small in relative terms, it wasn’t really all that small and with limited amount of RAM on the device it wasn’t always the best solution.  With the release of the .NET framework 2.0 came the Compact Frameworks 2.0 and around that time Windows Mobile 5.0.  The compact framework 2.0 was much “tighter” than the 1.0 release but to develop a real world class application you still needed to get down and dirty and do a lot of tricks to get it to do the things you want.  I’m confident with the next major release, this will become a fairly mature product at the same time the mobile operating systems based upon Windows CE.  In addition each year the devices provide more capability in terms of built in RAM, display resolution and processing speed.  Finally bandwidth provided by mobile carrier is increasing with each year so it looks like these devices are coming of age where it makes sense to seriously start putting business application onto these devices…

Saying that…

Let’s discuss a little bit about what type of application is a good candidate to build on a mobile device and what type isn’t....

What is a good candidate for a Pocket PC application?  A good candidate for an application is one for users that have a really busy schedule that require work to be performed at many different locations.  As good as a user interface is on a mobile device, the capabilities that are on a more robust set of hardware such as a laptop just aren’t present.  In addition the information that can be conveyed to the user is also fairly limiting.  Leaving out the obvious solution of calendaring/scheduling an excellent application for a mobile device is email.  With this type of application you really don’t have to perform many steps, lookup significant data, you just really want to exchange a little bit of information back and forth as efficiently and quickly as possible, you want to do it efficiently in that you don’t spend 2 minutes or even 15 seconds using the application, you want to do it quickly in that if you get an email, you would like to respond within a short amount of time (like 5 minutes).  Yes this could be done with a phone call, but if you are in the middle of a task, you may need to spend an extra 2 minutes completing it before you want the interruption of doing your end of the communications, by that time the original person has moved on and you may be interrupting them.  I guess you would almost call this a vehicle for asynchronous communications.  So now let’s think in terms of a busy remote worker with many tasks to be performed at multiple locations.  What can we do to empower these types of worker with the information they need and the capability to provide real time feedback to some sort of coordinator?  Well it depends, if the system would need something like...where they need to be and when they need to be there and their schedule doesn’t change that much, I guess they could just print out their schedule in the morning (or synchronize with a server in the morning) and that would be adequate.  There are two or three areas where building an application may make sense:

  • They need more than just the schedule, this could be any detailed instructions of what they need to do, any past work that has already been performed, contact information etc...
  • When they perform the work (drop off a package, pick up a vehicle or similar, some central coordinator needs to know about it.  3) 
  • Once they begin their day, their schedule may need to be flexible. 

So now revisiting the idea of an asynchronous vehicle for communications we can start thinking in terms of good candidates for mobile applications…well not yet, the other thing we need to think about is the capability of the device for interacting with users (at least until we can take voice interactions to the next level).  Right now a 2x3” screen with a stylus just isn’t the right answer for all but a certain class of applications.  I recently developed an application for a IT dispatching system that this is a great fit, but for someone like me that needs to have multiple and sophisticated "conversations" with technology it just isn’t all that efficient.  So the answer for determining the right cutoff for a mobile application might be the volume, length and the sophistication of the conversation between the user and the application.  So for a delivery driver where they could do a lookup of on a map, get directions, drop the package off, possibly get a signature, send that information about the coordinator, we have many small non-sophisticated conversations with a device.  For a developer fixing bugs, let’s say they fix 5-6 bugs a day, their conversation may be extensive if they enter notes but the key factor here is once they open their device get to where they need it is probably quicker to just do this on their desktop.  In addition the developer probably will enter some notes, until we come up with a reliable voice solution this will never be perceived as simple on a device.


No comments:

Post a Comment