stuff you never thought you wanted to know.


Programming mobile handheld devices.

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 coverage.

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. [1] 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 be possible.

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 [2]. 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 time.
• 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.


Programming mobile handheld devices
Sections in the article
Introduction to programming mobile handheld devices
Handling of temporally lack of network
Locating devices
Discovery of Services
Effective use of limited resources
Location-Based Services
User involvement in selection of service with concerns to price and quality


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 Sandbox
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

Web (webmastering)
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.

Microsoft Word
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 ©