Tuesday, August 31, 2010

First Look: Lotus Traveler on Android - Installation

With ample support from of IBM, I got an opportunity to participate in the limited beta release of Lotus Traveler (what is it?) for Android client. Here are the steps to install Lotus Traveler client on an android device.

Step #1: Identify the environment:

  • Lotus Traveler for Android requires "Lotus Domino Release  8.5.2 Code Drop 5" or above
  • Download the Lotus Traveler server task from IBM (Run the Lotus Traveler executable and point to the existing Domino server). Once installed, Lotus traveler task runs as any other server tasks (like Http, POP etc) on the domino sever. (Please refer to the screenshot)
  • Unzip the content of the "Lotus Traveler client for Android beta" file into the Domino/data directory of the server
  • Append the content of "VersionInfoExt.txt" into the existing file "VersionInfo.txt"
  • Identify a Android device running Android OS v 2.0.1 or above

Step #2: Access the url "http://<ServerName>/servlet/traveler" using the standard browser from your android device, Provide the login credentials as required. On the landing page, Click on the link 'Select an IBM Lotus Mobile Installer'

You should see Android as one of the available platform Options (Refer to the image on right). Click on the "Android" platform Option.

IBM provides the following two *.apk (android package) files (which you would have placed in Domino\data directory of the server as per step#1)
  • LotusInstall.apk
  • Lotus Traveler.apk
Upon selecting Android platform Option, the LotusInstall.apk file gets downloaded to the android device.

IBM separates out Actual Traveler software from the Installation Package. My guess, you will install "Lotus Installer" app only once and it should in future periodically check for the latest release of "Lotus Traveler" app from the server and download if there is a newer version.

Step #3: Starting the Installation
Running the Lotus Installer program would initiate the download and installation of the Lotus Traveler client.

Before running the Lotus Installer program, verify the Domino Server configuration document. Check the value in Server Document -> Lotus Traveler -> External Server Url. This field should be Non-blank and should point to your domino server. Apparently the Lotus Installer Program picks up the server name from this field and checks for availability of Lotus traveler client in there. As per the latest from IBM, in future releases, this issue will be fixed.

Once the file is downloaded, you would be prompted to initiate the installation. Once installation is complete, you would see the following four icons on your android device (see the picture)

  • Lotus Calendar
  • Lotus Installer
  • Lotus Mail
  • Lotus Traveler

The top three icons are self explanatory. Lotus Traveler icon will be used for checking status and monitoring operations that cross applications.

As I understand there would be another Lotus Traveler icon in the future release named 'Name Lookup'. This application will help users in directory/contact look up.

There you go, you have Lotus Traveler client on your android device.
In future posts, I will share my findings on usability/ functionality aspects of the Traveler email client.

Further Reference:
FAQ: Clarifications on Android beta release - Ed Brill's blog
Link to participate in the beta release of Lotus Traveler for Android

Monday, August 30, 2010

Ruby on Android

All Ruby developers interested in Android development, check this out

Thursday, August 19, 2010

Android musings: Options for storing persistent data

Android provides the following options for storing application data:
  • Preferences: Store primitive data in key value pairs (a detailed explanation below)
  • SQLite database: Preferred approach if your application needs relational data. Further, android SDK provides sqlite3 tool, which enables you to manage the SQLite database from a remote shell
  • Internal Storage: Save data in a file directly to device's internal storage. By default this data is private to the application only. When the user uninstalls the specific application, these files are removed
  • External Storage: Save data in a file into a removable media (such as an SD card) or an internal (non-removable storage). NOTE: There is no security enforced on files written to external storage. All applications can read and write to such files. Moreover users can manually (or accidentally) remove such files
For my SMSPost project, I had the specific need of storing two persistent parameters, e.g. frequency of scheduled run and URL for SMS upload.

I chose Shared Preferences as the persistent data storage approach, purely because of the ease of use in handling preferences. Shared preferences, enables relatively static data to be stored as Key Value pair and the data is accessible to all activities and services in the application. (NOTE - You can share your preferences across other application by defining the preference mode as MODE_WORLD_READABLE or MODE_WORLD_WRITABLE. For SMSPost application, we just needed the data to be available within the application, hence we set the mode as MODE PRIVATE) 

Sample Code:

// get handle to the shared preferences (called from an Activity Class)
        preferences = getSharedPreferences(Const.PREFS_NAME, MODE_PRIVATE); 

// writing to shared preferences
       SharedPreferences.Editor editor = preferences.edit();
       editor.putString(Const.PUBLIC_STATIC_TIMEPICKER_IDENTIFIER, resultFrequency);

//Reading from shared preferences
       if (preferences.getString(Const.PUBLIC_STATIC_TIMEPICKER_IDENTIFIER, "") == "")
                        return false;

Source: SMSPost.java

Please leave a comment if you have used any of the data storage options and would like to share your experiences.

    Monday, August 16, 2010

    Follow-up: What do story points relate to?

    This is a follow-up to my earlier post.

    When asked "What do story points relate to?"..here is how the readers responded.

    Result of the poll conducted on my earlier blog post

    In My opinion, story points have evolved to be a reflection of "relative" effort required to accomplish the story from just being a representation of "relative size". Here is why.

    In traditional software development, the size of a requirement doesn't change until there is a scope change. The size estimation doesn't take into consideration the factors which potentially may impact the effort involved..such as the unknowns, risks and complexity. Even if projects encounter schedule / effort slippages, the size remains constant and traditionally adept project managers attribute the delays to lower productivity.

    However in the value driven world of agile development, the bottom line is 'When can the working software be delivered'. The team comes together and estimates in story points to get a better handle in sprint / release / product planning. But the key aspect here is that story points intend to convey not just relative size (read scope of work), but also the capability of the development team, level of complexity and level of unknowns. Hence in my opinion, the story points best relate to the effort required to get the story 'DONE'.

    Does this explanation fit your view of story points? If not, please leave a comment.

    Wednesday, August 11, 2010

    Android UI design patterns

    Good to see effort from Google towards bringing consistency in Android UI design. It was long over due.

    A must watch for all android developers.

    Please share if there are any other good resources on Android UI design.

    Tuesday, August 10, 2010

    SMSPost: My first open source project

    For quite some time now I have been working on developing a "native mobile application" on Android platform. Finally I have mustered the courage to publish the source code as an open source project.

    Name of the Project: SMS Post
    Source Code: https://code.google.com/p/smspost/
    High-level Functional Requirements: Reads SMS from any android device and posts the content to a predefined website
    License: GNU GPL v3

    In coming days, I would share my learning from the project.
    Please leave a comment, if you would like to contribute to the project.

    Tuesday, August 3, 2010

    What do "Story Points" relate to?

    All agile teams use "Story points" for sprint/release/product planning. However, I still notice confusion around what does the unit 'Story point' represent.

    To that effect, request you to participate in the below poll and share your subjective feedback via comments.

    I would compile the findings and share my thoughts in two weeks time.