Programming mobile handheld devices.
|stuff you never thought you wanted to know.
Programming mobile handheld devices
written by Jon Berg <jon.berg|a|turtlemeat.com>
Handling of temporally lack of network
Temporally lack of network coverage is a problem when dealing with mobile computing.
When a user is on the move he travels through various physical locations that
cause varying network coverage. This can be caused by physical obstructions
or lack of sufficient network infrastructure.
Thick concrete walls can block signals. The higher frequency the signal is
transmitted on the more problems it will have penetrating obstacles. A lot of
the frequencies used today are on fairly high frequencies of 1GHz or more. Radio
signals for WLAN 802.11b/g uses 2.5 GHz with also a fairly limited range of
100 meters. Radio signals for 3G networks WCDMA operates on 2 GHz, CDMA2000
1x EV operates on a variety of frequencies from 450 MHz to 2 GHz.
Coverage in 2G, 2.5G and 3G networks are organized as cells. There are large
and small cells. Large cells have the purpose of providing large area coverage.
Small cells have the purpose of picking up traffic in areas with dense traffic.
Small cells can also be used to boost coverage in places where there is difficult
to get a good signal.
No matter how well the infrastructure is built to try to avoid loss of network
coverage there will be a certain chance that this will occur even in urban areas.
The mobile applications have to accommodate a way to cope with loss of network
Caching and prefetching in mobile device applications
Caching is the technique to store data you use and likely to use again close
to where it is going to be used. This is applied in many scenarios in computer
systems like the caching in CPU and caching in a web browser. Implementation
of caching in J2ME applications is difficult since the storage capacity of a
device is fairly limited. RMS is the standard storage facility in MIDP. The
data is accessed as byte arrays and RMS do not access data very fast.
Prefetching of data is a technique that can be used to mask out lack of available
network connection. Data that is known to be used in the future can be downloaded
locally when network connection is available and then used when network connection
is unavailable. In prefetching you will download data before it is used, and
the data may end up not being used. This is bad news for mobile devices that
have scarce network bandwidth resources. Storage is also a problem for prefetching.
Both caching and prefetching are methods used in common wired computer systems
where network bandwidth and storage capacity is generally large. These methods
can hide latency and lack of network connection. To implement these methods
in mobile device applications can be difficult since the network bandwidth and
storage capacity are very limited.  Some examples of the resource constraints
of the RMS, on the new Nokia Series 40 mobile phones limit you to 20k per application
for MIDlet J2ME applications. The Nokia Series 60 -phones limits you to the
amount of free memory on the phone. Newer Nokia Series 40s, like Nokia 6230
have a higher around 40k. For these devices some simple text could be cached
and stored in RMS, but larger files for example photos and sounds would not
Local out buffer
One approach to mask lack of network connectivity is to store updates locally
in a buffer, and when network becomes available the update is propagated to
other machines on the network. This will not work for all types of applications
like a holy-grail solution. It is also likely that the lack of network not should
be entirely masked away from the user. An example application that the local
buffer method would work is in an email system. The application is stored on
the device, and the user types his message. The device is disconnected from
the network. When he press "send" the message is queued in an out
buffer. Then a message appears that notifies the user that the message is queued
and will be sent when network connection is available. It is most likely that
the user wants to know that the message has not actually been sent. When network
connection is established the message is sent. A local out buffer works in scenarios
where you do not have to receive anything from the network to do the work. Or
the data that is needed to perform the computing is prefetched or cached.
Synchronous calls and Asynchronous messaging
In traditional systems the client server model is heavily used. Benefits
of a client server approach is that it is simple to implement and do not require
any middleware systems.
There are several drawbacks with synchronous calls like RPC calls in a wireless
environment . With synchronous calls it is difficult to archive error handling
and quality-of-service level guarantees. In real applications it is likely that
both methods will be used in a sensible combination. Asynchronous messaging
can give be a solution to many of the problems you get with synchronous calls.
Some key benefits you get with messaging in enterprise applications are:
• Universal integration. Decoupling of the sender and receiver. This ensures
that components can communicate automatic and seamless as long as the parties
know the interfaces used in the message protocol. • Reliability. A messaging
application got more support for giving guarantees on reliability when you can
notify the sender when a message did not get delivered in a certain amount of
• Scalability. In asynchronous messaging the server resources is not tied
up in keeping idle connections. An asynchronous messaging server can handle
more clients than a synchronous connection based solution.
• QoS. Messaging allows differentiating among the different traffic. Some
messages may be given a higher priority. That is important during peak times
where wireless bandwidth is even more constrained than usual.
Right method for the application
These are some of the methods to ensure better handling of lack of network connectivity.
To develop an application in this environment one must address this problem
because it is very likely that lack or loss of network connectivity will happen.
Setup Software Raid 1 with LVM
Setup Linux with Desktop
Manage your website ads with DFP
Google AdSense for Domains - not so great
Let Google Handle Email for your Domain Name
Page Rank banned by Google
Google's highest ranked web pages
SEO intelligent spam causes irrelevant search results
Google ranking factors
How to not give out page rank in web page links
Web Server Programming
Simple Java web server
Simple Python web server
Configuring Apache webserver with .htaccess file
Turn off the loginscreen in XP, after installing .NET .
Turn off xp login screen unread mail count
What is .NET
Introduction to Cascading style sheets (CSS)
The value of Alexa traffic rank
HTML META tag, not a search engine optimization tool
Create a maintainable webpage with modularization
The www prefix in your domain name
What is RSS and cool things RSS can be used for
MySql backup and restore with phpMyAdmin
Mix Computer related text
Doing business (making money) with Information Technology
Business with Computer Science
Research in Computer Science
Current and future possibilities of Medical Informatics
Tasks that make sense to have automated
Programming handheld mobile devices (overview)
Security tips for the web surfer
Price and Capacity in computer hardware
Java RMI Tutorial.
Page numbering in Word
Numbering headers or outlines in Word
Create a List of Figures
Turn off the default collapsing menus in Word
Turtlmeat.com 2004-2011 ©