Antony Pranata mobile blog

Antony Pranata mobile blog

Wednesday, June 27, 2007

Some Numbers from Motorola’s CEO Speech at CES 2007

I am going to highlight some numbers on mobile phones industry from Motorola’s CEO, Ed Zander. Just for your information, I am not at CES video now. I watched the web cast from Motorola site.
  • There are more than 25 mobile devices sold per second these days.
  • We have 2 billion of mobile phone subscribers.
  • It took 20 years to get the first billion of mobile phone subscribers. It took 3 years to get the second billion. It is estimated, it will take 2 years to get the third billion.
  • There are about 40 million new mobile phone connections every month. Over 6 million new subscribers are from India. Over 5 million new subscribers are from China
  • 80% people in Japan sleep with mobile phone switched on.

Note: Ed didn’t highlight so many numbers, just like OPK. However, he had more live demos on his keynote.

P.I.P.S Is POSIX on Symbian OS

Symbian has just released P.I.P.S in Beijing, China. P.I.P.S. stands for “P.I.P.S. Is POSIX on Symbian OS”. It is a recursive acronym. It reminds me to GNU, which is a recursive acronym for “GNU is Not UNIX”.

P.I.P.S. - PIPS Is POSIX on Symbian - will enable C programmers to more easily migrate existing middleware and applications, either commercial or open source, to Symbian OS by providing standard POSIX C APIs on Symbian OS.

For me, this is very good news. It proves that Symbian is listening to developers’ feedback. As you may know that many developers have been saying through video that Symbian OS has “uncommon” programming paradigms, such as active object, leave/trap mechanism, etc.

Bringing POSIX to Symbian OS is a big step to attract more third-party developers to develop applications for this platform. Furthermore, it would reduce the cost of porting code from other platforms to Symbian OS. With so many cool open source projects out there, the sky is the limit.

What is actually POSIX? According to Wikipedia:

POSIX or “Portable Operating System Interface for uniX” is the collective name of a family of related standards specified by the IEEE to define the application programming interface (API) for software compatible with variants of the Unix operating system.

POSIX basically contains APIs that are compatible across many operating systems. One example of the APIs, which is also part of P.I.P.S, is Standard C Library. Another example, which is part of POSIX.1c, is thread libraries, such as thread creation, scheduling and synchronization. If you are interested to read more about POSIX including the list of header files, you can visit Open Group’s Single UNIX Specification.

There is not so much information from Symbian’s press release about P.I.P.S. implementation, such as how many POSIX functions that have been implemented on P.I.P.S. We have to wait until the end of Q1 2007 to download the first beta version of P.I.P.S.

So, what’s coming to Symbian OS after POSIX? C++’s STL (Standard Template Library)?

Forum Nokia Champion 2007

Exactly one year ago, I received an email from Forum Nokia. Just like Balagopal, firstly I thought it was just newsletter highlighting new products. It was not newsletter. It was a welcome letter stating that I was selected as founding member of Forum Nokia Champion.

On February 13, at 3GSM in Barcelona, Forum Nokia will launch Forum Nokia Champion, a recognition and reward program that honors a select group of mobile developers from around the world. We are pleased to inform you that as one of the outstanding talents in our community, you have been named a founding member of Forum Nokia Champion.



For you who don’t know about Forum Nokia Champion initiative, here is a brief description from Forum Nokia web site:

Because Forum Nokia wants forum.nokia.com community members to know how very much their hard work and involvement is appreciated, we have launched Forum Nokia Champion, a recognition and reward program for top mobile developers from around the world. Forum Nokia Champions are outstanding individuals who are selected on the basis of their outstanding skills and devotion to the Forum Nokia community.

If I remember correctly, there are around 50 developers around the world who were selected as the founding member of Forum Nokia Champion.

The reward was a very big surprise to me. I couldn’t believe that I was selected. Honestly, I felt that I hadn’t contributed too much to the developer’s community.

On the other side, being selected as Forum Nokia Champions has some implications to us. We have to share our knowledge to other swiftvideos.com Forum Nokia members. Our insight, vision and active involvement should inspire others.

The membership of Forum Nokia Champion is valid for one year only. My membership is supposed to be expired today. Fortunately… I have been re-selected as one of the new Forum Nokia Champions 2007.

Thank you to all Forum Nokia Champion team. Congratulations to the founding members who have been re-selected…

Update (January 27, 2007): Thanks to all bloggers who congratulate me:

Carbide.c++ Debugger uses CORBA?

Some of you may already know that I have migrated from Visual Studio .NET 2003 to Carbide.c++ for my Symbian OS development. I have been recommending developers to use Carbide.c++ on discussion boards as well as my blog.


In the last couple of days, I have received an error message in my Carbide.c++ related to CORBA (Common Object Request Broker Architecture). Yes… it is a real surprise… but the clip message is really about CORBA (see screenshot below).



According to the message above, CORBA is needed as communication channel between the IDE and the Debugger Engine. It appears usually when time-out happens, for example when my laptop is “busy” doing something else.

This is actually not the point I want to discuss here. My point is “Why does Carbide.c++ use CORBA?” Aren’t there any other methods to talk to the debugger, such as JNI (Java Native Interface)? I am not saying that CORBA is bad. It just not the “right” architecture for simple communication between Java-based IDE and C++-based debugger. Why?

  • CORBA is too complex and it has too many overheads. There are some papers that discuss this issue. One of them is a paper from Prof. Juric, Performance Comparison of CORBA and JNI.
  • Some people say CORBA is dead. Why should we use technology that is already dead? ACM Queue has a nice article, The Rise and Fall of CORBA, which lists some lessons learnt from CORBA’s mistakes.
I don’t know why COBRA was chosen as the architecture for Carbide.c++ debugger. They must have good reasons for choosing CORBA. Unfortunately, it causes a problem for developers who are still using “relatively” slow machine, just like me….

Bonus Links
  • Object Management Group - the official web site of a group who maintain CORBA specification.
  • Java Native Interface - the official documentation of JNI from Sun Microsystems.
  • Matjas B. Juric’s Papers - Mr. Juric is an associate professor at the University of Maribor, Slovenia. He has published some papers about performance analysis between CORBA and other solutions.

Why UIQ3’s Emulator Creates Two Windows?

I have been playing UIQ3 SDK since last week. There is an odd thing about the emulator. It creates two windows. One window is the main emulator’s window, which simulates the phone. The other one is small window that seems doing nothing (see screenshot below). Sorry, if you have never used UIQ3 SDK; you may not know what I am talking about.
This window contains nothing. There is no additional menu. It has no buttons or whatsoever. It cannot be resized. For me, it looks like stupid window.


Anyone knows the purpose of this small window? It must be created for a good reason.

Backup/Restore does not Work with Developer Certificates

There was a request a use of my freeware application, Screenshot for Symbian OS, to include backup/restore feature. This will be a useful feature for a user who updates his firmware regularly. As you may know, updating firmware using Nokia Software Updater currently removes user’s applications and data on the phone.
There are two good articles that discuss how to support backup/restore on our applications, i.e.:
PC Connectivity: How-to Write Backup Aware Software for Symbian OS v9 from Symbian
S60 Platform: How to Enable Backup and Restore for Installed C++ Applications from Forum Nokia
After reading those two articles, I added backup/restore support to my application. Guess what, it didn’t work. PC Suite has reported that my application has been backed up (see screenshot below). However, when I restore the backup, my application is not restored back to the phone.

What’s wrong? After playing around with the installer file for one full day, I got an answer. Backup/Restore simply doesn’t work with developer certificate from Symbian Signed. The backup/restore works with other certificates, including self-signed certificate.
This problem has been confirmed by Symbian. You can visit Symbian forum discussion to read more detail information. What is the solution? Nothing. What I am going to do now is submit my application to Symbian Signed with backup/restore. Let’s hope the best that everything works.
Stay tune… as usual, we have to wait 2-3 weeks before Symbian sign a freeware application….

Is 1.6 Greater Than 1.4?

I am a little bit frustrated with how S60 SDK emulator handles Preferences dialog. Currently it uses Java application to display Preferences dialog. We all know that one of the basic concepts of Java is “write once run everywhere” (well, it may not 100% true because some developers say write once debug everywhere). For some reasons, Preferences dialog on S60 emulator does not like JRE version 1.6.

The picture below shows a dialog displayed when I select Options Preferences menu on my S60 FP3 SDK emulator. As you can see, it says that JRE 1.4.1 or later is required.


What version of JRE do I have? Currently, I am using the latest JRE, which is version 1.6.0. In my opinion, it should work. Isn’t it 1.6.0 later than 1.4.1? I am confused now. I would appreciate if someone can explain or may be solve it. I have spent a couple of hours figuring out this problem.

Update (May 8, 2007): Apparently, there is a workaround to this problem, i.e. by editing epoc32\tools\ecmt\config\config.properties and adding Java 1.6 version. For more information, please see http://wiki.forum.nokia.com/index.php/Emulator_issues_and_solutions.

Writeable Static Data in a DLL on Symbian OS 9

If you have programmed on pre-Symbian OS 9 using C++, you may be familiar with the error message “.app has initialized data” during compilation. This error message is caused by global variable. It one of the limitation of executable (.app) on Symbian OS 9 that we cannot define global variables. It is because .app file is actually also a DLL.

Starting from Symbian OS 9, the swiftvideos executable file is always in .exe format. That’s why we can define global variables. How about .dll? I just noticed today that EKA2 (EPOC Kernel Architecture 2), the kernel used by Symbian OS 9 as well as 8.0b and 8.1b, allow static variable. There is a macro, called EPOCALLOWDLLDATA, that needs to be defined in the .mmp file. For example:

TARGET my.dll
TARGETTYPE dll
EPOCALLOWDLLDATA

Bonus Links

Example Code of Using XML Parser in Symbian OS

A couple of weeks ago, I had a plan to write an article and example code of using XML parser in Symbian OS. It seems that another Forum Nokia Champion, Paul Todd had the same idea. He posted a nice article about XML parser in Symbian OS 9.x to Forum Nokia Blogs. It’s good that I don’t need to write the same article.


What I would like to share here is a complete example code of XML Parser in Symbian OS. The example code can be run on Symbian OS 8 and 9 phones, which means it can be compiled under S60 2nd Edition FP2/FP3 SDK or S60 3rd Edition SDK. I am planning to release the same example code for UIQ3 soon.


Click here to download my example code of XML parser


The example basically parses an XML file, \data\example.xml, to the main window. The content will be displayed on CEikEdwin control (see picture below).



Note that the code is written as an example; thus it is designed to be as simple as possible. Do not use it in the production code!

One more thing, this is not the official example code from Forum Nokia. It is just my personal example code.


Accredited S60 Developer

Last night, I took an exam to get a certification as an Accredited S60 Developer. For those who don’t know about Accredited S60 Developer:

The Accredited S60 Developer programme from Forum Nokia is an objectively measurable framework for continuous professional development for S60 C++ developers. It comprises a curriculum and pass criteria defined by Forum Nokia and an on-line assessment that tests knowledge and understanding of that curriculum, provided my Majinate Limited.
The pre-requisite to become an Accredited S60 Developer is that we have passed
Accredited Symbian Developer exam, which is another exam to measure the competency of Symbian OS development. The complete curriculum for Accredited S60 exam is available on Majinate’s web site.


The exam basically contains 36 multiple choices questions. Each question can have up to 3 correct answers. We have to select all the correct answers. If we can select all of them, we will get point. If answer a question incorrectly or missing the correct question. Each question has different weight. It means we will get more points when we answer more difficult question.
The exam also uses Computer-Adaptive Testing (CAT) method. The difficulty level of the next question is based on our previous answer. If we answer it correctly, the next question will be more difficult; and vice versa.

How to prepare the exam? If you are interested taking the exam, I would recommend:

Always Remember that Mobile Device has Limited Battery Power

Recently I had a strange problem with my Nokia E61 device. The device needs to be charged every day. I was quite sure that the battery was still okay. The device was relatively new, about 1 month old. Before it happened, I could use my device for 3 - 4 days without charging.

I thought it must be from one of the applications that I have installed recently. I suspected one of the applications that I have just installed. Then, I decided to uninstall it (I am not going to disclose the name of the application). What happened after that? The problem with my battery was solved. I can use my clip device normally.


Why did it happen? Apparently, the application installed a server that runs in the background. I am not sure what the server is doing, but it empties the battery very fast.

As a mobile developer, how can we avoid this? Forum Nokia has a good paper, S60 Platform Effective Power and Resource Management. I won’t repeat everything here; just highlight some of the important points:

  • Continuous timers, ticking too frequently (for example, more than once every five seconds), can adversely affect power consumption.
  • If an application is moved to the background, it should, where appropriate, be paused and timers should be stopped.
  • The backlight shall not be kept on without a good reason. It is turned off after a short period of inactivity is to conserve power; therefore overriding the system defaults should only be done if there is a compelling reason.
  • Communication technologies, such as Bluetooth and WiFi, should be used carefully, as there is always some drain on the battery when any network interface is active.
  • The camera has to be powered off when it is no longer used. Even if the camera is not being actively used, it is still consuming power if it is not powered off.
  • Please, always remember that mobile device has limited battery power. It is not the same as desktop world where the power is “unlimited”.

Free Booklets from Symbian

These free booklets from Symbian are intended for developers. They discuss various development topics in hand and consie format. They are normally less than 100 pages long. The terms “free” here mean you can download it from Symbian web site and get the printed book for free.
Currently there are 9 booklets plus some translations to Chinese and Japanese and the list is growing. Here is the current list:
Essential Symbian OS booklets
Signing Tips
Coding Tips
Performance Tips





Using Symbian OS booklets
Getting Started
Java ME on Symbian OS
P.I.P.S
Carbide.c++
Data Sharing Tips



Essential UIQ booklets
UIQ Essentials Getting Started

Advertisement