Posts for the month of October 2010

Minimum supported OS is now 4.5

Note: This only affects the pre-2.0 version (known as 1.9.x, or the development builds)'

As of the latest development build (, the oldest version of BlackBerry OS supported by LogicMail is now 4.5. (It had previously been 4.2.) If you are one of the very few people still running an older BlackBerry with OS 4.2 or 4.3, please try to upgrade to 4.5.

Here are the reasons I made this decision:

  • The official BlackBerry development tools (i.e. the Eclipse plug-in) does not support anything older than OS 4.5 on a new installation
    • I only have OS 4.2/4.3 on my systems because I have older installs that I've updated.
    • It only pretended to support OS 4.2 and 4.3 in the past. I could build, but the simulators never worked right, so I never tested on anything older than 4.5 anyways.
    • This is an annoying dependency issue to figure out for a new developer freshly checking out the source code to LogicMail.
  • OS 4.5 cleaned up some API calls for device/network information that look very kludgy on OS 4.2. (technically 4.3 fixed some of these)
  • Pretty much all OS 4.2/4.3 devices are upgradable to OS 4.5.
  • Download statistics show that hardly anyone is using anything older than OS 4.5 anymore.

So I've already done the following:

  • Modified the automated build files to change the base OS to 4.5 (Ant build.xml and files)
  • Modified the Eclipse projects to that used to have a 4.2.1 dependency to now have a 4.5.0 dependency (LogicMail, LogicMailTests, J2MEUnit).
  • Reconfigured the build server to generate 4.5.0 instead of 4.2.1.

I'm now in the process of upgrading my oldest physical test device (an 8820) to OS 4.5. Over the next several days I'll be renaming any source files ending in "BB42", and trying to clean up my use of APIs marked as deprecated in 4.5.

  • Posted: 2010-10-29 21:01
  • Categories: (none)
  • Comments (1)

Incremental message loading

I recently had the chance to do another marathon coding week of LogicMail development. These rare opportunities allow me to make real progress, instead of just incremental fixes and features. While the majority of the work was deep in the guts of the application, the actual user impact should be quite welcome.

To sum things up, I managed to accomplish the following:

  • Complete rewrite of the folder message cache (#213)
    • This is where I store message headers (not contents) so refreshing your view of a mailbox is faster than re-fetching everything from the server.
    • I now use the device's internal persistent store for this, instead of the filesystem. (which will eventually make filesystem-less operation possible, for #167 and #232)
    • This cache can be intentionally wiped with a "Clear" button at the bottom of the main configuration screen.
  • Complete rewrite of the code that refreshes mailbox contents and reconciles with the cache, when the user clicks on a mailbox
    • Makes this behavior far less messy and far more error-tolerant, allowing improvements in the future.
    • Keeps cache better synchronized with the server (#209)
  • Implementation of a new "Load more messages..." feature, for incremental mailbox loading
    • The message list on the mailbox screen now shows a special "Load more messages..." item whenever there's a gap at which more messages can be loaded.
    • If your mailbox has messages which are not ordered by date on the server, this item might appear in weird places.
    • This now adds three new configuration options to the advanced account settings:
      • "Messages to load" - How many messages to load/update at the front of a mailbox, when the user selects it. (the equivalent of the old global messages-to-load option)
      • "Load increment" - How many more messages to load when the user clicks on the new "Load more messages..." item on the mailbox screen
      • "Messages to retain" - How many messages (total) to keep in the local cache (and reconcile with the server) if they've already been loaded.
    • Feel free to offer suggestions for better naming
  • Opening a POP message now marks it as opened in the local cache.
    • POP servers don't store flags, so this should be a welcome feature
    • Eventually I'll probably implement fake support for other flags on POP accounts this way

And now for the few screenshots I can share:

  • Posted: 2010-10-24 13:38
  • Categories: (none)
  • Comments (0)

BlackBerry Developer's Conference Wrap-up (2010)

I recently attended the 2010  BlackBerry Developer's Conference, something I seem to be making a habit of, and had an overall good experience. It wasn't quite as eye-opening as previous years, probably because new developer tool announcements weren't aligned with the conference. However, there was still some good content. The best part? They've finally decided to make some of the content publicly available this time. You just need to go to the somewhat hidden  BlackBerry Developer Portal, login, and find the link for "DEVCON10" in the middle of the page.

I also had the privilege of presenting again this year. I spoke on a fairly technical topic, sharing a lot of my lessons-learned from building LogicMail across such a wide range of OS versions.

COM12 - Layout, Configure and Build Strategies for BlackBerry Apps

Supplemental files Download
  • Posted: 2010-10-24 13:36 (Updated: 2010-10-24 13:38)
  • Categories: (none)
  • Comments (0)