Palm webOS 1.3.1 Released: what is fixed, what is broken.

webOS 1.3.1 Released

Today Palm released webOS 1.3.1. If you hit their support pages you will see a list of the release notes.

What was fixed.

I had personally reported several issues when if came to the sync of emails and calendars. With one exception (see the what is not list below) I think they have fixed it all. Not a moment too soon - I was ready to give up on the platform due to the email related issues.

In summary: + Email messages still push even when your account hits 50 messages (FINALLY!) + Calendars now still sync even with special characters and notes. + Exchange related issues seem to be resolved.

I have noticed that the platform is a bit more responsive in certain situations, but generally speaking the speed increases are not as dramatic as previously suggested. Applications still take too long to launch.

What was not.

I hear that iTunes support is still broken. I don’t use it myself so I can’t confirm this.

More importantly Google Calendars (for Google Apps accounts) only sync over EvDO. So if you want your calendar to update you will need to turn off WiFi and then sync. If forcing update doesn’t work try editing your account settings and simply type in your password again - this got things syncing again for me.

The Punchline

If your calendar won’t sync, turn off WiFi and try again. And don’t hold your breath for iTunes support.

Everything else with the platform should be fixed.

The Rogers HSPA+ Rocket Stick & Mac OS X 10.6 Snow Leopard

Zero-Install Plug and Play Software Doesn’t Mean What You Think…

Okay so before I get to the punchline I am going to rant. Sorry.

I am used to using Novatel Wireless devices and they have great Mac support. Many have drivers bundled with the OS so you just plug them in and type in the settings. Then you are on the web.

Clearly a Microsoft Windows user wrote this statement because on a Mac this means that the driver is bundled with the OS (and not on a hidden read-only flash drive on the device). Really, doesn’t Zero-Install mean you don’t have to install drivers. So when I plugged the Rocket Internet Stick into my MacBook and it didn’t appear in my network settings I was disappointed to say the least.

Making matters worse for some reason the Rocket Stick (ZTE MF668) didn’t even work once I installed the drivers. I had the following symptoms on Mac OS X 10.6 (Snow Leopard):

  • The bundled Rogers App does pretty much nothing. It tries to connect but always fails.
  • Once the devices is unplugged it is uninstalled along with any network settings preventing manual configuration.

The Game Plan

Having setup several different Rocket Sticks and similar devices I figured that the best option would be to manually configure the modem. That means we need to accomplish two things - first we need to disable whatever is removing the device from the network settings and then we need to create a manual profile.

To do this we need to get everything installed first then clean it up. First we will install the package that comes on the Stick. Then we will delete the LaunchDaemon that clears the settings and remove the Rogers App. Finally we will add a Modem profile for the Rocket Stick (ZTE MF668) and enter the Rogers network settings.

Installation

The first step is to install the provided drivers. They will mount (showing up as a CD on the desktop) when you first plug the device in.

Once this is done you need to remove the Rogers App (Connection Manager.app) and uninstall the LaunchDaemon that will keep trying to remove any created profiles.

cd /Library/LaunchDaemons/
sudo launchctl unload cn.com.zte.PPPMonitor.plist
sudo rm -rf ./cn.com.zte.PPPMonitor.plist

cd /Applications/
sudo rm -rf ./Connection\ Manager.app

Eventually you should see a popup where you can launch Network Preferences to configure the device.

Configuration

Now you are staring a the Network Preferences Panel. We need to do a couple things here to get things running. You need to setup the newly added ZTEUSBModem (you can safely delete the ZTEUSBATPort if you want - it is just needed for the Rogers Connection Manager).

First we need to type in basic settings:

  • Telephone Number: *99#
  • Account Name: wapuser1
  • Password: wap

The click the “Show modem status in menu bar” so you can easily connect.

The you need to go to Advanced Settings (button in bottom left) and click Advanced. Make sure you are on the Modem tab. Select Generic as the vendor, GPRS (GSM/3G) as the Model and type in internet.com as the APN.

If you want you can rename the USB Modem to something like “Rocket Stick” and you can reorder the service so that when plugged in this takes preference over other connections.

Using the Modem

At this point all you need to do is click connect from the Rocket Stick tab in the Network Preferences.

If you have enabled it you can also do this from the menu bar by clicking connect directly form there.

Final Thoughts.

Well, that might have been a little tricky or hard but, trust me, it will be worth it in the end. Rogers has done a great job of expanding their existing 3G coverage and I am looking forward to HSPA+ in Edmonton.

Palm Pre Workarounds and Troubleshooting Tips

WebOS

Let’s face it, as cool as it is, the WebOS is really a beta. It has been out for 6 months and has not been thoroughly tested. So things are breaking.

For me there were two major issues that were killing me:

  • My hosted Google Apps GMail would just stop working.
  • Calendars would just stop syncing.

After searching and hacking and playing I found the following four things fixed just about everything.

Four (plus One) Tips to Keep Your Pre Happy

Until the WebOS is fixed here are four tips that will keep things going with as few issues as possible:

  • Setup your GMail account in Calendar, not Email.
  • Don’t use ActiveSync - Use IMAP - where possible.
  • Archive messages out of your Inbox - keep the total count well below 50.
  • Only use LETTERS and NUMBERS in your calendar appointments.
  • bonus: If sync is not working disable WiFi and reboot.

Google suggests the first tip and they are right. The Pre will fill in the settings for Email when you add the account in Calendar.

While you may be tempted to use Exchange support there are some email bugs with it. I’d steer clear and use IMAP if you can. Hopefully this will be fixed soon - Palm knows about this.

If you hit 50 messages in your Inbox you are dead. No more messages will come. Keep your Inbox clean.

Calendar syncing WILL stop if you add things like a comma or even a question mark. Sad as it is only numbers and letters. This has been reported in Palm’s forums and I know that a bug has been filed as well.

I had trouble again with sync tonight and I found that in addition to all the other steps what really did the trick was a couple reboots with WiFi disabled. Not sure why this worked.

I Don’t Like Magic Fixes…

As annoying as these workarounds are I still like the Pre. It is the best iPhone alternative on the Market right now. I think the competition will be good for Apple.

That is not to say I am ditching my iPhone. But I do like the Pre.

Continuous Integration in 2009

A Great Idea

Continuous Integration (CI) is a really great idea.

For a guy like me it means that one week before a major product deadline I can leave early on Friday (as opposed to freaking out and working a 75 hour week.)

But, it doesn’t mean what it used to. Less that two years ago I remember talking about Continuous Integration as “Making sure someone doesn’t break the build.” Reading that statement makes me laugh now. What a ridiculously low bar.

Back then just having a server check out your code and compile it was something. Having it run unit tests the package your software for deployment was amazing.

Times have changed.

What I am now looking for in a Continuous Integration server it is completely different. I want it to grab the code and run Unit, Functional and Acceptance tests on it. Then I want a code coverage report for those tests. On top of that I want a report on standard code metrics that will tell me things like how “DRY” the code is.

To be considered exceptional all of these features need to be tightly integrated and status notifications about updates should be done over Twitter and with a Growl notifier.

Better yet the tests, coverage and metrics should be run pre-commit and anything less than 100% passing and 100% coverage should not be allowed in the repository.

Continuous Analysis & Integration

Really what we are talking about here is not Continuous Integration anymore, it is Continuous Analysis and Integration. Because it really doesn’t matter if the code integrates unless the code is also DRY and thoroughly tested.

My Wishlist

So here is my wish-list for a CI server to use on upcoming projects:

  • Integration with GitHub including post commit hooks.
  • The ability to run tests, coverage and metrics pre-commit via a gem (think like that Heroku magic for deploying).
  • A project template that includes tabs for artifacts from test results, coverage reports and metrics
  • Twitter integration.
  • A growl notifier.
  • Aware of Ruby/Rails for the collection of artifacts necessary for deployment.
  • Integrated ability to run capistrano deployment scripts to stage a site if everything passes.
  • Tasks run as worker process with customizable credentials and not as the Apache user! (I shouldn’t need to mention this one.)
  • All of this out of the box without hours of configuration.

A Final Word or Two

The idea of convention over configuration is beautiful and should be applied to Continuous Integration.

A lot of systems can do anything but everything is hard. That is just dumb.

Good practices should be simple. Customization should be possible.

Post a comment if you have something that you think fits the bill. I think a lot of people would be really interested in hearing about it.

Continuous Integration with Integrity.

Nick Quaranto has posted a nice article talking about their Continuous Integration setup over at Thoughtbot.

And while he did a great job of explaining what he did, the details of how exactly he did it were left as an exercise to the reader. Here are the details that you are going to need to actually get this thing running.

There are two parts to this adventure, Integrity and Metric_fu.

Integrity

First we need to get Integrity up and running. Install the following gems first: * Rack (v 0.9.1) sudo gem install rack -v0.9.1 * Sinatra (v 0.9.1) gem install sinatra -v0.9.1 * Thin (v 1.0.0) gem install thin -v 1.0.0

If you are running on OSX then you will need to get require ‘forwardable’ into your environment.rb because it is not there. This is needed for Thin 1.0.0.

Turns out that Sinatra needs to be version 0.9.1 or the notifiers will explode.

The you can then install integrity. Got to the Integrity Website for the details on this. USE THIN. If you don’t you are going to be compiling code as www-data. Create a user account on your server that can access the console and start up thin with this account. Start and stop thin like this:

thin -C thin.yml -R config.ru start
thin -C thin.yml -R config.ru stop

You likely want to have this start with a LaunchDaemon on OSX or something else on Linux. And you likely want to toss this into your Apache config file with a little something like this

############ INTEGRITY PROXY ###########

<VirtualHost *:80>
        ServerName integrity.yourserver.xxx
        ProxyRequests Off
        ProxyPreserveHost On
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>


        <Proxy balancer://mongrelcluster>
                BalancerMember http://127.0.0.1:8910
                BalancerMember http://127.0.0.1:8911
        </Proxy>

        ProxyPass / balancer://mongrelcluster/
        ProxyPassReverse / balancer://mongrelcluster/
        ProxyPreserveHost on

        <Location />
                Order allow,deny
                Allow from all
        </Location>
</VirtualHost>

That should get Integrity going. But, who cares unless it tells that things are breaking. Add a little Twitter notification with by adding the following to your config.ru file:

require "notifier/integrity_twitter"
Integrity::Notifier.register(Integrity::Notifier::IntegrityTwitter)

And then get an integrity-twitter notifier gem installed. I use this one:

git://github.com/hchoroomi/integrity-twitter.git

Great. Now you can get your tests running.

What I’d suggest is to manually check your stuff out and try to have it run on the server. This will help you get all the gems you need for your project installed and let you debug issues.

If things are just refusing to run, ask yourself this question “Who is thin running as and can they run on the shell?”

metric_fu

Nothing worth doing is simple.

Okay with that out of the way we need to get the gem for metric_fu installed and working. First grab qrush’s version: git clone git://github.com/qrush/metric_fu.git

And this is where the fun starts again. Rcov have moved but no one knows yet. So grab it from here: git clone git://github.com/relevance/rcov.git

And then install it by hand:

gem build rcov.gemspec
sudo gem install rcov-0.8.3.4.gem 

Before this point you might want to delete the following lines from tasks/metric_fu.rake to stop it from opening the tests once complete:

if MetricFu.report.open_in_browser?
  MetricFu.report.show_in_browser(MetricFu.output_directory)
end

Then you can install the qrush fork of metric_fu:

gem build metric_fu.gemspec 
sudo gem install metric_fu-1.0.3.gem

Bringing it Together

Once this is done you can do something like: rake test:all rake metrics:all

And you should have some tests that run and metrics created. The question remains, how do I get this on the web?

I don’t have the answer to that yet. But I will let you know once I am operational.