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.

Wednesday, November 23, 2011

Shuttermate

My first Windows Phone 7 app is now in the Marketplace!


http://bit.ly/tzZNq6


It passed certification on the first try and took about two working days to get through the process. I received an email that it passed and it wasn't until the next day that the it actually showed up in the Marketplace. I guess that's a typical turnaround these days. 


I'll say that the process to go through to get certification was lengthy but MSFT really spells it all out and gives you a great set of tools to make sure you get it all correct the first time. The Certification document is direct and detailed enough without being too lengthy to tell you what you need to know. The testing tools and certification checklists are a great help, without it, I surely would have not passed certification.


Now that I've written my first published app, I've already moved onto my next application. A basic tea timer app. More tk...

Wednesday, November 16, 2011

My First WP7 App

I've been working on my first Windows Phone 7 App, finally. A few weeks ago I sat down and wrote a whitepaper on what this App would be. Then when I finally had and made some time I began desiging and coding it.


I've had a number of years in .NET WinForms development and more recently some Silverlight experience. My XAML isn't expert-level yet but I'm very comfortable with C# and .NET. This has been a great learning experience so far and its fun to take a simple idea and then begin to actually make it a real application. A lot goes into making an application and once you begin and things start rolling you get more and more new ideas on what to add and what to improve and refactor.


So what does this thing do? It helps me with calculating exposure times and selecting the right filters when I'm out taking landscape photos. It's a nice little companion App that aides my aging brain so I don't have to figure out EV stops in my head or have to carry around charts or lookup tables.


Tools Menu
The various tools in the App are accessed from the first page of the application. Right now, the list of tools includes:

  • exposure
  • ND filter
  • dynamic range
  • big stopper

I would use the exposure tool when in a low-light situation, like when taking photographs before sunrise or after sunset. When my camera is in Aperture-Priority mode, the automatic metering of the camera will only go as far as taking a 30 second exposure. If the scene is still too dark for 30 seconds, you can use a nifty trick in your camera by bumping up the ISO value until the camera hopefully meters properly. The range I have for ISO is only from ISO 200 to ISO 6400. I don't count the LO and HI ISO values in my D700. This is only a range of 5 stops so it won't always work in all situations but sometimes it may help. The trick is to see if by adding up to 5 more stops of sensitivity, you will finally have metered a correct exposure for your scene. Then you simply reset your ISO value and then compensate your exposure time with how many stops you needed to add when bumping up the ISO value. Easy, right?


I'll use the ND filter tool when I want to figure out which ND filter to use to get a specific exposure time. For example, say I'm photographing a waterfall, it's mid-day and bright, but I want the water to be silky smooth and have a target exposure time of about 2.5 seconds. I simply put in my current exposure time then my target exposure time and the App tells me which ND filter to use.



ND Filter Tool
For the dynamic range tool, I'll use this when I want to know the difference between say the sky and the foreground. This helps me figure out what ND graduated filter to possibly use. If the difference between the sky and the foreground is only a couple of stops, then I may not use a ND grad. However, if there was something like 5 or more stops of difference, then I'd definitely use a ND grad and this tool will help me decide which one by telling me the actually difference in stops between the two exposures for the sky and the foreground.


Last is the big stopper tool. We have a Lee Big Stopper filter in our bags and sometimes it comes out. The trouble with this filter is that its about a 10-stop or ND3.0 filter and calculating the proper exposure time to use with this filter requires either a chart or some mathematical gymnastics in your head. Enter the big stopper tool in my App. Just put in your current exposure and the tool tells you what the proper exposure time will be when you add the Lee Big Stopper.


I plan on wrapping up this first go around of functionality, taking care of the Windows Phone Mango certification requirements, and then submitting this to the Windows Phone Marketplace. Next I have some plans for more useful tools in the App. I'll have to get through the first hurdle first before I add any new features though.


Writing WP7 apps is made easy because of the great tools available from Microsoft. Its also a lot of fun with the usual challenges with development. I love this little platform and phone and I'm excited about working more with it!

Cheers!

Wednesday, September 21, 2011

WP7 + AppHub

So I've decided to give Windows Phone 7 development a try. I ditched the awesome Droid x2 in favor of a new HTC Trophy. Before I went Android, I had a Windows Mobile 6 phone, the HTC XV6800. The codename for that old phone was the Titan. Coincidentally, HTC's new flagship Windows Phone coming out soon is also called the Titan. It's going to have a massive 4.7" screen and "Mango". Can't wait to see that one!

And now i'm back with Windows Phone again. Why? I am a Microsoft and Windows developer at heart. Always have been, always will be. Throughout my 12+ year career in software development, I've been at crossroads that could have lead me down the path of Java, HTML, Objective C and most recently, Adobe Flex. Each time I've stuck with Windows. Not only have I continually "used what I know", touted by Microsoft Build 2011, but I've also committed myself to learning what I can, inside and out, all the tools and technologies that Microsoft has to offer. I still don't know everything and never will. There simply is too much and technology moves at a pace much faster than anyone can wrestle with. Because of this, I don't feel as if i'm limiting myself. I look to grow when I can. There is always an opportunity for that.

This is now an opportunity to be a part of the Windows Phone community. I've started this blog where I hope to share what I can about it and about Windows development in general. I've signed up with AppHub and I have my developers ID. I also have a couple of ideas for some first apps that may make their way to the Marketplace. Overall, i'm really excited about starting this and I hope to learn so much more and to share.

Thanks.

Michael Henasey - On the Shelf Software