Archive for the ‘Geek Schtuff’ Category

How to Access Native Services with MIDlets

Tuesday, July 5th, 2005

Extending the Reach of MIDlets: how MIDlets can access native services explains how to get access to Symbian phones native code in J2ME (since the sandbox does not allow JNI). The writer of the article, Arvind Gupta, also provides explaination and code sample in MIDP JNI Workaround.

I will use it to plug my STAMPS J2ME prototype to GSM Tracker written in Symbian.

Application Autostart in Symbian

Tuesday, July 5th, 2005

There are mainly 2 ways to launch native applications at boot time on Symbian systems:

Start-on-Boot Registration API allows to specify that an executable be launched and kept running indefinitely by registering it for re-launch as part of the phone’s boot sequence.

EzBoot: A boot manager application. It allow you to autostart an application (typically a server) when the phone is powered on.

Static Analysis to Improve Software Reliability

Thursday, June 23rd, 2005

At the EPFL I&C Research day, James R. Larus from Microsoft Research talked the way to build dependable software. Even though the computer have become incredibly more convenient, users are still often frustared, annoyed, and confused. He mentionned that people are still afraid to use computers and that software is the weakest link. Nowadays, Micorsoft uses static analysis to improve the construction of reliable system. They do semantic analysis to find programming language misuses, API usage errors, semantic errors (races, deadlocks), and abstraction-specific errors. He also explained how their KISS system works with concurent systems.

It is interesting to see one way Microsoft uses to lower users frustrations, annoyance, and confusion. Reliability is one thing, trust is another. I am wondering what efforts they also make to increase the trust of users to their systems.

JXME 2.0 Stable Release Announced

Wednesday, June 15th, 2005

As an early adopter of JXTA 5 years ago, I am now very interested in JXTA-J2ME (JXME) project

JXME is to provide JXTA compatible functionality on constrained devices using the Connected Limited Device Configuration (CLDC), and the Mobile Information Device Profile 2.0 (MIDP). The range of devices include the smart phones to PDAs. Using JXTA-J2ME, any MIDP device will be able to participate in P2P activities with other JXTA devices

Some massive multiusers mobile and locative applications would have a lot to gain from a P2P architecture.

Very interesting, is the project’s list of technological constraints to provide P2P functionalities:
• 50k MIDlet size Current cell phones have a total limit of about 123K for storing all MIDlet suites. In addition, Motorola phones currently limit each MIDlet to be no more than 50K and NTT DoCoMo phones limit MIDlets to 30K.
• Persistent storage on cell phones can be as little as 8K which is shared by all the MIDlets.
• Runtime heap is of the order of 32K - 64K
• Bandwidth is very limited and latency is high
• CPU power is very limited - around 20MHz.
• Battery life is very critical.
• Limited libraries MIDP-2.0

Bonjour for Windows

Friday, May 6th, 2005

Bonjour (formerly known as RendezVous) is now available for Windows. It will be interesting to see if there will be any unpredicted usage. There is an Bonjour SDK available for Windows also now.

Swing Best Practices

Thursday, April 28th, 2005

Very handy, a resourceful wiki for best practices in Swing.

Mobile Multiplayer Games, Bandwidth and Latency

Thursday, April 28th, 2005

Doug Twilleager rightly points out in Mobile Multiplayer Games and 3G, that 3G won’t necessarily bring multiplayer mobile games to a higher level. Because the bottleneck for such mobile applications is not the bandwidth but the latency. And, the latency on a 3G network still has a long ways to go.

On 2G networks, expect a ~1 second latency, if HTTP must be used, then think more of ~5 second latency. In lab UMTS produces >100ms latency, but generically “3G� doesn’t solve all problems. After deployment expect ~500ms latency. (figures taken from Greg Costikyan presentation on Designing Mobile Games)

Designing Mobile Games

Friday, April 8th, 2005

I stumbled on two powerpoints on Designing Mobile Games, one by Greg Costikyan and the other by David MacQueen that give tips on mobile games design without forgetting the technical constraints . A few bullets I found compealing:

  • Game design has two main components: UI specification and gameplay algorithm specifications
  • Game Design is about action. Not necessarily fast action, but the player takes actions to affect the game state
  • Media assets are the “nounsâ€? of the game—allowable actions are the “verbsâ€?
  • UI allows you to trigger the verbs. In a mobile game, ideally 1 key = 1 verb
  • Doom has only 8 (left, right, ahead, back, jump, shoot, switch weapons, pick up)
  • Types of Challenges are: physical, mental, and oppenents
  • Categories of pleasure: sensation, fantasy, narrative, challenge, fellowship, discovery, masochism.
  • Constraints do not limit creativity; they spur it
  • Multiplayer games differ: players provide the challenge, replayability is vital, handling player drops gracefully, player matching, short play sessions
  • Approaches in dealing with latency: Turn-based games (round robin or simultaneous movement), act-whenever, slow update games, shared solitaire games, mask latency with game fantasy, untie game outcomes from specific play configuration

The Eight Fallacies of Distributed Computing

Wednesday, April 6th, 2005

The Eight Fallacies of Distributed Computing by Peter Deutsch are even more true in the mobile distributed computing:

  1. The network is reliable
  2. Latency is zero
  3. Bandwidth is infinite
  4. The network is secure
  5. Topology doesn’t change
  6. There is one administrator
  7. Transport cost is zero
  8. The network is homogeneous

The Most Powerful Mobile Calculator Ever

Monday, April 4th, 2005

Developed by Zeno Crivelli, MathMe (Mathematica micro edition) is J2ME application for Mathematica that connects to a remote kernel running on a full-fledged server to do the computation.

MathMe