UPDATE: Modified second to last paragraph with pointer to http://gallery.live.com. Added a design goal to the list.
I was asked by someone in my management chain, let's call them Manager X, to build a sample Windows Vista Sidebar gadget that would be of potential use to our US Public Sector customers. Since many Government employees travel and many consultants working for the US Government use the GSA Per Diem Rates, we decided to go with a rate lookup gadget. We had some basic design goals for this gadget:
- Provide some practical use for US Public Sector customers
- Present a modern, visually appealing User Interface using Expression Studio
- Use ASP.NET AJAX for Exposing Web Services to Client Script and Calling Web Services from Client Script (see http://smarx.com/posts/ajax-enabled-vista-sidebar-gadgets.aspx for a nice "how to")
- Event handlers
- Client side controls
- Event handlers
- Show a "Service Unavailable" UI when the web service can't be reached
- Minimize code execution when the gadget isn't visible
- Build an autoupdate infrastructure so end users get the latest version of the gadget when it is published
- Show "passing" data between a flyout and the main gadget UI
Making sure the gadget looked good was one of our first requirements. I have ZERO designer skills. James volunteered to lend his design skills to the effort. From the start, this project has been an exercise of testing out the Designer / Developer workflow between Expression Web and Visual Studio. I am happy to report that IT WORKED! James did all of his design work using Expression Studio while I used Visual Studio. We were easily able to work back and forth on the same code base.
Why did I take on this little project? I thought it was a good excuse to build an answer to some of the common questions customers have asked me about gadget development using ASP.NET AJAX. Therefore, the decisions we made for v1 weren't always about the best end user experience. For example, the gadget uses a copy of the GSA Per Diem Rates stored in a SQL Server 2005 database. Should the gadget cache the rates locally for offline lookup? Possibly, but we wanted to showcase the Web Services programming feature of ASP.NET AJAX. Is the data in the gadget synchronized with the GSA Per Diem Rates? No, the data is a one time dump from the GSA site. Why am I asking these questions? Well, we decided to post the source code to Codeplex (http://www.codeplex.com/usgovperdiemgadget) and share it with the community. We're hoping that some of you may take an interest in furthering the development of the gadget. There are some known issues and suggestions for the next version already submitted on the CodePlex project site (http://www.codeplex.com/usgovperdiemgadget/WorkItem/List.aspx).
If you just want to download and use the gadget, you can get it at http://gallery.live.com/LiveItemDetail.aspx?li=2fff1d73-c113-4678-bdac-3b839ff8f01d.
What's next? That's up to you! Download it, use it, tell your friends, review the code, etc. Let us know if you are interested in working on a v2 version of the gadget. If we get some interest, then I will continue to be the project coordinator.