Tuesday, November 09, 2010

PhoneGap for WP7Dev and the RTM version of the SDK

For anyone interested, I've just pushed a new version of my WP7 PhoneGap implementation up to GitHub.
The code can be found at https://github.com/mrlacey/phonegap-wp7/tree/master/rtm/.

Please note that this doesn't do anything special. It's basically just the old code slightly restructured, with the mobile spec tests removed and using the latest project formatting.The only real difference is that it works with the RTM version of the SDK.
I've tested it with VS2010 Ultimate & Express.

Important! This still does not handle tombstoning!
Until it does, this should be considered proof of concept only and is definitely not production ready.
Unfortunately support for tombstoning is going to require a very big change to the structure of the existing code and will impact all the JS/C# interop.
However, as I've found the time to fix the code referenced above that shows I'm working through my to-do list and getting closer to finding/having the time to make the big change.

Thursday, November 04, 2010

Learning, not moaning.

If you follow me on Twitter you may have noticed that I have a tendency to complain about poor service and badly produced apps quite a bit. In an attempt to be a bit more positive I thought I'd see what I can learn from these issues rather than just moan.

Here's what I've learnt in the last few days.

If you have an Orange Broadband account and have set up an online account to look at bills, etc. You'll discover there isn't a way to change your password and if you forget it you have to call a phone number to speak to "tehnical support" and have them tell you it. If you then ask to change the password they will tell you not to. Presumably because it's a non-trivial task for them.

Lesson learned:
Understand security. Make sure "technical staff" understand security. Make it easy to change passwords.

When trying to speak to someone at Direct Line I had to go through their automated phone system which presented options I had to select by pressing numbers.

Lesson learned:
Make things easy to navigate and test navigation routes.

When trying to log in to a website (mentioning no names), I eventually discovered why my password wasn't working. - It was because I had CAPS LOCK on. But I had no way of seeing this as the entered characters were masked. (The username/email had been saved by the browser so I didn't see the upper case characters being entered there as I didn't have to type anything else.)

Lesson learned:
Indicate if CAPS LOCK is on when the user is entering text which isn't displayed - like with a password entry box when characters are starred out.
Or, write a password checking system which accepts either correctly cased passwords or passwords entered with case inversion. This means storing 2 hashes of the password (& salt) but is only a very small amount of work which could save a lot of frustration for any user who can't see why their password isn't being accepted.
I'm holding off on ignoring case entirely in passwords though. That seems like a step to far and would be more of a compromise in security and invalidate the user's attempts to use a strong password.

I just installed some of the apps in Windows Live Essentials but it also installed some of the apps I asked it not to install.

Lesson learned:
Thoroughly test installers!
and, in case this is a dependency issue - be sure to indicate dependencies and other things which must be installed as well, clearly.

It took 2 phone calls taking over 25 minutes to stop Orange from taking payments from my account which they should not be - due to a mistake that they made. When this was finally sorted no-one said sorry and I haven't been given anything for the trouble (of them taking payments they weren't due or for the inconvenience and time taken for me to identify the issue and get them to sort it out.).

Lesson learned:
Say sorry and provide compensation (of some appropriate sort) when you make a mistake.

Yes that's a lot of issues for two days but I think about these things a lot because I want to make awesome apps (and services) which don't frustrate the user or contain stupid decisions or do anything apart from make it easy on the user and get out of their way.