Push Email on the Windows Mobile Platform

A few months ago, I went ahead a bought an HTC Touch Smartphone. I initially wanted the Pocket PC platform, so that I could easily sync up with Outlook and have all of my contacts and appointments with me at all times. Synchronizing that information with a typical phone is very painful.


At first, I didn't really like the HTC Touch. It's slow (compared to a standard phone or an iPhone). The biggest issue was getting push email to work. The guy at the Sprint store claimed that you would just enter your email credentials, and push email would magically be enabled. I ensured him that it wasn't that simple, but he still insisted.

With pocket Outlook I was able to set up access to my GMail account using IMAP. The problem was that it was slow, and push email didn't really work at all. Research led me to the conclusion that Pocket Outlook really sucks at IMAP. I even tried another email client (Flexmail), but I still wasn't satisfied.

Then, I found out that you could use the "Live" application on the phone to get real-time email from Hotmail using the option on the device for receiving emails "as items arrive". I signed up for a Hotmail account, and set my GMail account to forward a copy of all messages. This option proved to be very flaky, but the email delay wasn't too bad. After doing some research, it seems as though this option pretends to be push email, but is in fact very frequent polling. I would occasionally lose my data connection, and the mail application would just give up.


Now on to the option that actually works, and the ONLY option that has worked consistently, reliably, and without much delay (5-15 seconds). Sign up for the "Live" option on Mail2web. This basically gives you your own free Microsoft Exchange account. Set up your email accounts for forward a copy of your messages to this account. Then use the credentials they supply to connect your device. On Windows Mobile 6, you can set it up in ActiveSync on your desktop, or through the device itself.

This option has worked flawlessly for me, even when I can barely get a signal. I get email no matter where I'm at, and I can save time because I don't need to compulsively check my computer for new mail. I'm guessing this is really the only well supported option for mail, because this is how business customers would set it up.

For extra credit, I copied the XP email notification sound off my system, amplified it (using Audacity), and then set that as my mail notification. I get the recognizable email sound, which is pretty confusing to those around me when there are no computers around.

Enjoy your real-time push email!

Like this post? Please share it!

See a mistake? Edit this post!

Don't play the "What If" game

One of the biggest traps I've seen developers fall into is what I like to call the "What If" game:

"Make your ID columns integers"

"But what if we want them to contain a letter eventually?

"Let's cook these 10 steaks"

"But what if 100 people show up?"

"Let's go to the park"

"What if we get sick?"

The "what if" game consists of over thinking your plan. Planning in general is obviously essential. However, I've seen an alarming rate of crippling fear. Fear to write any code because it will never possibly handle all possible scenarios. It ends up being a self fulfilling prophecy of failure.

Sometimes the side effect isn't just a fear to write code. It often leads to code that is generic beyond usefulness. For example, a database with all columns being VARCHAR(MAX).

Specialization is basically a spectrum. At one end, we have code that is so specialized that it is basically un-reusable. At the other end, the end I'm talking about, we have code that can be used everywhere, but doesn't really do anything.

Some of the hardest decisions we have to make as developers are related to whether we base our decisions on the present, or a potential future that has a variable amount of certainty.

I'm not saying that you should avoid planning, but your decisions need to be based on the real likelihood that changes will need to be made later. An ounce of prevention is worth a pound of cure, but 64 ounces of prevention is certainly not worth a pound of cure!

Like this post? Please share it!

See a mistake? Edit this post!

UPS Says "No"

For some time, I've been trying to get UPS to allow us to use their API. Here is their latest response:

Thank you for your interest in the UPS Ready Program.
UPS has reviewed your application and has made a decision not to authorize you at this time. We consider business models, value to customers and UPS, size and age of company, ability to develop and support application(s) within given Program parameters, as well as the full completion of the Application form. Our UPS Ready program supports hundreds of solution providers worldwide, and uses strict screening criteria for protection of UPS's intellectual property, customer information, and representation of UPS trademarks and services.

Young Technologies LLC has been carefully reviewed by our program management, and does not meet our program entry criteria for several reasons. Among those reasons are:

  • functions as an aggregator business model, and UPS Ready does not support such models, or authorize such models to have access to UPS API technology. UPS's APIs are licensed tools, and any unlicensed use is prohibited.
  • UPS's trademarks and service names are protected property worldwide, and unauthorized use of these names and marks is prohibited. We ask that remove these references from your web site, accordingly.

We will retain your information for future reference, should you wish to re-apply for consideration to the Program.  In the interim, we would like to recommend that you have your client(s) register as an End User by clicking on the following link.

Well, I guess the next step is to start calling them. I'm hoping that persistence will pay off.

I would like to add support for end users entering their API key, and then be granted access to the tracking data. That would at least give some of our heavier users some options.

Another option is to scrape the data from their site, which obviously isn't ideal. Does anyone have any other ideas?

They must not care about the 15,000+ monthly unique visitors, or the nearly 500 people that signed the petition.

Like this post? Please share it!

See a mistake? Edit this post!

Jason Young I'm Jason Young, software engineer. This blog contains my opinions, of which my employer - Microsoft - may not share.

@ytechieGitHubLinkedInStack OverflowPersonal VLOG