Tuesday, December 27, 2011

Whiskers

I've submitted Whiskers the password keeper to the WP7 Marketplace. I think I began working on this last month sometime, after I finished up TeaMate. This app was far more involved than the previous two. There are a total of 17 pages (views) and close to 2,000 lines of code. The .xap may come in at a scant 351 KB but there are countless hours spent putting this application together.
At first I was going to call this PassMate but coming up with a logo/icon around this proved to be too difficult. Instead, I decided to place shield for an eye-patch on a cat and call it Whiskers instead. Yea, Whiskers may not have anything to do with security and the cat may be mistaken for a pirate-cat, but Whiskers seemed like a good name. The idea for the patch came from our cat, Toby-kat, who has sort of a bum eye. Toby-kat doesn't really have a patch but since he doesn't see too well out of one eye, we seem to think he does.

Whiskers is a pretty straightforward password locker. You create an account, give it some details, and its safely stored until you need it. Accessing your information is pretty fast and easy with all the details available just about in one screen. There's even a recent page which keeps track of what you've been accessing lately and displays those first.

So that's a total of three apps so far. I have many more ideas and some enhancements in mind for the existing apps. I don't have anything planned yet but I think I may take a short break from app-making and get back to some photography.

Hard at Work

I've been hard to work for the past month on my next WP7 app. It's called Whiskers and its a password keeper. I wanted to develop a password keeper that accomplished the following few goals:

        1. Is Simple
        2. Is Secure
The simple part is, well, simple. Metro UI, clean, appropriate iconography, and features that simply "get to the facts, ma'am". What Whiskers does best right now is store your passwords and other important data easily. What is missing are features such as backup, import, export, etc.

The secure part has been a wrestling match. First, I wanted the data to be encrypted securely. I went through several options and iterations of implementations and finally settled on the built-in Data Protection API (DPAPI) in Windows Phone 7. The API safely and securely encrypts any type of data and does so in a way that the data may only be decrypted on the very same device. By using the DPAPI, I don't have to store any key data, salt values, or other private encryption bits that could be sniffed out of my .xap or from Isolated Storage data.

The second part of security is leaving out the need for application permissions such as Data Services. For me, any application, especially one the stores my private data, should have very good reasons for the need to access the Internet. Whiskers does not and this should give anyone confidence that their data isn't being sent and stored someplace out in the ether. Accomplishing this was full of compromises.

The first compromise was leaving out a Mango feature that I thought would be useful and that is pinning a tile to the Start screen. I implemented the ability to pin any one of your secrets to the Start screen. I later pulled this feature because usage of the ShellTile namespace requires the application to have the Data Services permission. Why? Because a ShellTile has a Uri property which means the tile could redirect to a URL somewhere out in the ether. 

Other compromises deal with the whole, import, export, backup and save to the Cloud features that many people ask for. Again, in order to feel that this app is secure and isn't sending your private data somewhere out into the ether, I decided to leave these features out that way I can leave the need to add the Data Services permission to the app. 

In the future, I'm considering a pro or plus version of the app that would enable Data Services and allow you to use the Cloud. This would go against my two primary goals for Whiskers but then again, this would be a different version of the app altogether so I guess that is ok.

I hope to wrap up this first version of Whiskers soon and submit it to the Marketplace. Like my previous apps, I'm going to make this free and free from Ads. 

Friday, December 2, 2011

TeaMate

My second Windows Phone 7 application, TeaMate, has been certified and published in the Windows Phone Marketplace.

http://bit.ly/u7vEwp

TeaMate is a simple tea timer to help you brew the perfect cup of tea.

- Set a brew time from 1 to 10 minutes

- App displays a message and plays an alarm to let you know your tea is done

- Alarm plays even under the lock screen or when the screen times out
One challenge with timer applications in Windows Phone 7 is that when the phone does into Idle mode, that is, when the screen goes off automatically or when the user hits the power button to turn the screen off, your application is no longer active and running. This means something simple as a timer stops running. So how does the timer continue to function and set the alarm off when the time is up?

To workaround this issue, TeaMate also creates an alarm and registers it with the Phone. That way, even if the screen is off and the app is not active, the timer will still go off as expected. Now, if the app remains active, just before the alarm goes off, I unregister the alarm from the Phone. That way, the app can alert the user when the timer has expired and not have the Phone's alarm reminder go off as well.

This ingenius little trick allows the alarm to work even when the phone is Idle and the screen is off and it plays well in the Windows Phone ecosystem by not running in the background and consuming battery life.

In case you were wondering, the logo, or asian character you see in the TeaMate is the Chinese word for tea.