Saturday, December 29

Code Signing

Each of the mobile platform has a code signing process that will verify that the mobile application is authentic. The objective of code signing is to ensure that mobile applications is well trusted, virus-free, and traceable to the company.

Verisign ACS (Authenticated Content Signing) Portal issues certificates for various mobile platforms. It has a good diagram on how mobile code signing works:

Window Mobile Signing


Symbian Signing
  • Open Signed with Publisher ID
    • As of Q3 2007, there is big change to the Symbian signing process. It is suppose to make signing more cost effective and easier. The CA they use is TrustCenter, instead of Verisign ACS. Get a Publisher ID from TrustCenter for USD $200/year. But you may still you existing Publisher ID from Verisign ACS.
    • Open Signed with Publisher ID is for development process only, in which it makes convenience for the developer to sign an application for up to 1000 IMEI numbers. To deploy commercially, Express Signed and above is needed. Below describe Open Signed process.
    • Register an account at www.SymbianSigned.com
    • Buy a Publisher ID from TrustCenter for USD$200/year. Get the Publisher ID file (.cer) and Private Key file (.key) and the private key password.
    • Run DevCertRequest tool to generate certificate request CSR file. The CSR file will obtain you a Developer Certificate.
    • Go to www.SymbianSigned.com to upload your CSR file.
    • Download the Developer Certificate.
    • Developers can now use the Developer Certificate to sign the SIS file, using SignSIS tool.
  • Express Signed
    • Express Signed for for general commercial release.
    • Assuming that you have tried for Open Signed previously, the steps to Express Signed is as follows.
    • Use SignSIS to sign the SIS file locally, using TrustCenter's Publisher ID private certificate and password instead.
    • Go through a test ?
    • Go to www.SymbianSigned.com, Submissions -> Express Signed. You will upload the SIS and PKG in a zip file. Each submission requires a prepaid Content ID, costing US$20 each. Content IDs can be bought from the portal.
    • Prepare various information - Write a readme.txt that describe how to use the application. List the capabilities used, their uses and the methods.
    • After submission, the application is sent to the CA for signing against the Symbian B root certificate. The signed application will be able to be downloaded from the portal immediately.
    • The application might be selected for audition - testing done by SymbianSigned with no cost from you. But the outcome might affect your future developments. If failed, your Express Signed option will be disabled. You will then need to be Certified Signed, which requires testing.

Java ME Signing
  • The worst of all platforms when it comes to signing. Partly due to the number of vendors and devices it has to support. So much so that developers has to know what are the certificates present on the device first. Multiple certificates might be needed to work on all phones.
  • Steps to MIDlet signing - Very comprehensive, including common problems with the signing and the tools

Wednesday, December 26

Mobile Web Site

Mobile web site development. Some call it WAP development. In mobile devices, there are many different markup languages: XHTML MP (WAP 2.x), CHTML, WML (WAP1.x) and HTML (iphone, PC) too.

Guides & Links:

  • Global Authoring Practices by Luca Passani - He is internationally known for mobile service and is more famously known as the author of WURFL - Free and open sourced! But too bad his Switcher is not free..
Some Resources
  • Mowser Vs Google - Compare Mowser, which claims to be a better mobile transcoder than Google. Read here on a blog post and also how to prevent Google for automatically transcoding your Web site for mobile.
  • ready.mobi - Checks if your mobile site is compliant with standards set.
  • MIME Type for Symbian .sis:


    sis
    application/vnd.symbian.install


  • MIME Type for Windows Mobile .cab:


    cab
    application/x-cab-compressed



Some Technicalities:
  • Dynamically respond with the correct MIME type with just a few lines of code from here. This helps when device such as iphone could not browse a WAP site.
Other Links:

Tuesday, December 25

just2me.com, a Christmas present for myself

Its Christmas season once again, a period of giving and receiving gifts! I agree, but I hate to buy gifts as it is so nut cracking. Every shopping item that I sweep across my eyes, I have to repeatedly ponder on the question of "would he/she like it?". Shopping kills brain cells.

But buying present for myself is all too easy. I know what I would like to have. This Christmas, on sudden impulse, I decided to make myself happy. I bought my first domain name!

www.just2me.com

It looks like a pretty good domain name right? I chanced upon it when I was searching for a new domain name for HomeTone (my Hoiio entry was chosen in the end). My domain name suits me and my blog since my nick is JustDevil, and I specialize in J2ME.

Lastly, if you would like to buy over this domain name, do email me. Bidding starts from $10,000 USD.

Sunday, December 23

Navteq Map Data

Mobile is about mobility. Mobility is about location, and it can't do without good maps.
The giant in the map data of the world is none other than Navteq, the $8.1 billion company acquired by Nokia in October 2007. When I mentioned that the money paid for is $8.1 billion USD, some people doubt if I meant million... They heard of Youtube, but not Navteq, and Youtube is only $1.65 billion.

But think about this. $8.1 billion makes sense. Maps, since centuries ago, has always been highly valued by mankind. People will even kill for a map (a treasure map of cos!). Map creators (i think of Nami in OP ^^) spend lots of time and effort just to create an accurate representation of the actual landscape. These are contents created by professional with hard work, unlike Youtube where contents are created by any Alice, Bob or Cherry..

Understanding Navteq data formats

Navteq provides different abstraction format to their data. This way, developers can choose the format they want to use, independent from the underlying data. Some of the formats:

  • GDF 3.0 - ASCII format. de facto international standard
  • SPF - ASCII format. Proprietary to Navteq
  • RDF - Relational database format

Saturday, December 22

Python on S60

Python is an interpreted , object oriented, and has remarkable power with clear syntax. It claims to be a programming language on the rise.

When mobile development on S60 devices are concerned, the platform that gives a developer the broadest power is Symbian, the native OS. But developing with Symbian C++ is nothing but pain. Python for S60 is different - applications can be developed quickly and it potentially could have as much power as what Symbian offers, since python is interpreted by a Symbian application.

But there are drawbacks to it. It requires the support of the open community to make it grow further.

Resources:

In my attempt to learn, I tried to develop HomeTone on python. Surprisingly, in just barely 2 hours, I managed to read most of the tutorials and create a working application that can call and SMS! And it takes only less than 200 lines of code! There is a future for Python on S60! Will be perfect if there is an active object for call event in Python...

Monday, December 17

Web Development Framework - SEAM

For those who are interested in picking up an enterprise web development framework, you may want to try JBoss Seam. It is a fairly new framework (about 1+ year) and claims to be the first framework for EJB 3.0.

I have just gone through a 1 day quick tutorial course, and it seems to be a good framework, having an fulfilling the agile and ROR-like programming aspect. But there is a lot to learn and get use to. At the end of the day, our hands-on objectives is still to hard for newbie -.0

Some features of Seam are:

  • Use of POJO - Pain Old Java Object
  • Little xml configuration files. It makes use of @Annotations instead.
  • Configure for pageflow
  • Integrate technologies such as EJB3, JSF, Ajax4JSF etc

Friday, December 14

Gundam stop motion video

My first stop motion video with my Gundam toy model..

And it won me a Panasonic laptop, courtesy of PlayNetEarth :)

Panasonic laptop for top prize

Wednesday, December 12

Code Versioning with SVN

SVN is a code versioning tool, which has being gaining popularity over the more well known CVS.

Some SVN commands for server:

  • To run the SVN server serving out to your clients:
    • svnserve -d -r c:/svnrepos/ --listen-port 7788
      Start the daemon svn server, with repository under that directory, listening to port 7788.
  • To create a new project in the repository.
    • svnadmin create TestProject
  • In the project repository conf directory (eg. c:/svnrepos/TestProject/conf/),
    • Add users in 'passwd' file
      Example:
      jd = password
    • Add permissions in 'authz' file
      Example:
      [groups]
      tribe_r = user1,user2

      [/]
      @tribe_r = r
      jd = rw
  • Use TortoiseSVN to do an initial import.
    Example of an URL:
    • svn://localhost:3690/TestProject
  • When you need to do a migration (moving your repository to another computer, possibly with another ),
    • svnadmin dump c:/svnrepos/TestProject > TestProject.dumpfile
      This will create a dump file of the entire TestProject repository
    • svnadmin create TestProjectNew
      Create the new repository in the new computer.
    • svnadmin load TestProjectNew < TestProject.dumpfile
      With load, your project repository will be migrated successfully!
    • Copy the passwd and authz files directly to set up the same access rights.

For client:
  • Use TortoiseSVN to do a initial checkout with the same URL.
  • Thereafter users can commit and update with the same URL.
  • Client is as simple as that...

Resources:
  • Collabnet SVN - Download both server and client with tortoise GUI

Tuesday, December 11

Porting to different platforms


Mobile fragmentation has led to difficulties when it comes to porting an application across platforms. We are not talking about 3 or 5 platforms, but rather up to hundreds of different phone platforms/families with different capabilities!

Whats worse, J2ME itself has internal fragmentation too!

Some links:

  • MoSync - Write in C/C++, compile for all! Includes WM, Symbian, J2ME, etc... Need to verify how good it is though.
  • Metismo - Abstraction layer for J2ME