Project Spotlight: WhatIWantMost
Tuesday, July 08 2008
Well, its been awhile since the last one of these, about 8 months to be exact, but I want to keep this series alive so I am going to try and do at least one a month. I did decide to change the name of the series to Project Spotlight from Side Project Spotlight because I don't think it necessarily matters if the project is on the "side" or not and I think some people might prefer not to refer to their project as a side project. I will continue to focus on small projects that are created and launched by a developer or a couple of developers though, I won't be doing PR pieces for companies or anything.
So for the second one of these I talked to Dan Hounshell about his project WhatIWantMost. The interview is actually a little bit out of date (since we did the email interview earlier this year) but I am sure Dan will correct me on anything that has changed since then.
Give me a quick bio:
I am a software developer for Telligent Systems. I am part of a two person developer team that maintains the www.asp.net, forums.asp.net and weblogs.asp.net sites. I have been a web developer since 1997 or 1998 when I was first introduced to ASP and Visual Interdev. As sad as that first version of Interdev seems now, it was awesome to me then. The majority of my focus has always been in the Microsoft web stack, though I have taken some short detours with Red Hat, PHP, postgreSQL and MySQL. I've spent all of my professional career working for small to medium sized web agencies. I have built everything from small e-commerce sites for local organizations like Gold Star Chili and the Cincinnati Zoo to a project management application for FedEx, and more recently sites based on Community Server for Microsoft. However, I've never been able to shake my fascination for experimentation and my entrepreneurial spirit. WhatIWantMost is one of the recent manifestations of those two things.
What inspired you to write WhatIWantMost?
There's really two things that contributed to my inspiration for building the site. First some friends and I were sitting around at work during the Christmas holidays talking about how much shopping we still had left to do and that most of the people on our lists were getting gift cards… again. I mentioned that I had thought about writing a little web application for my family to use to keep track of things the kids wanted. Something like that would be much better than making them write out 10 copies of their list and passing them out at Thanksgiving followed by many calls back and forth later to coordinate who had already bought what. We started searching for domains that would work for a site like that and I found and registered WhatIWantMost.com. I held the domain for about a year and a half before ever doing anything with it – I just kept it tucked away in my back pocket.
The second contributing factor was my urge to work with some new technologies. Like many of us I never get to play with everything that I'd like to during my day job. Some people can read a book or an article or two and poke around with a couple of code examples and feel satisfied that they have gained some cursory knowledge about some new technology. I like to work with those things by creating a project to immerse myself. Some of those projects get "finished" and some of them don't, but I feel I get a deeper understanding that way.
I really wanted to work with .netTiers (among other technologies) a bit to see what it was all about. I decided that building the WhatIWantMost wish list site with .netTiers was a good opportunity to do so.
What are your plans and goals for the site?
My original plan was to just build the site, get some experience with .netTiers, and blog about the process each step of the way. The series turned out to be pretty popular and I still get a lot of hits from Google searches for .netTiers on those blog posts. That itself is pretty satisfying to be able to help out the community like that. Once I had the site in a pretty good state, however, I figured that I might as well put it out there and see what happened.
Currently I still use the site as an experimentation platform. If I find something that I want to try and it will fit in with the site then I will add it. For example, I've recently added some Twitter support where an update is posted to your Twitter timeline (something like "I just added Product X to my wish list on WhatIWantMost") when you add something to your wish list. I've alos been working on a simple Facebook application. For the short term I think I will continue to do the same – keep experimenting.
Some of the things I plan on adding soon revolve around building more "community" into the site: allowing members to upload avatars; being able to create a list of friends to follow; allowing members to create calendars for special events (birthdays, anniversaries, etc); notifications of your friends upcoming events; etc.
What technologies did you use to write it?
The base of the site, the data and business layers, is built on .netTiers, which is a community project CodeSmith template for generating a complete application. I was really amazed at how simple and powerful .netTiers was to use. I've added functionality to the site over time and re-building everything except for the UI layer is as simple as starting up CodeSmith, opening the project file, and clicking the "generate" button.
One of my goals with the site was to make it really easy to search for products from the site and add them to your wish list. To accomplish this I spent a lot of time researching and working with the API offerings from Amazon, Ebay, Yahoo, Google and Live Search. I wanted to build a library that would query the web services of those sites and present the user with a combined list of search results from all of them. Some of that research was frustrating: Google had not yet offered a search API for Froogle and Live Search's API did not cover their "product search" (both of those may have changed by now). I was able to get a combined search working for Amazon, Ebay and Yahoo, but the overhead of hitting all three web services along with lack of AJAX skills really hurt the user experience. For the initial launch I disabled the Ebay and Yahoo searches and went with just Amazon. It's still a slick and easy to use implementation, but I've been thinking about other ways to tackle the problem recently and I hope to eventually work all those web services back into the product search.
The UI was built using standard ASP.NET controls with a lot of help from ASP.NET AJAX and the AJAX Control Toolkit. I mentioned earlier that my AJAX skills were limited when I started the project so most of the AJAX used on the site is implemented with Update Panels and a lot of client-side Javascript wiring. I'd like to make another pass at the AJAX implementation now that I have more experience to try implementing more AJAX web service calls than relying on the Update Panels.
My database of choice is SQL Server 2005 and I make use of a lot of 3rd party and/or open source libraries like: Microsoft's Patterns and Practices Group Enterprise Library for logging, exception handling and caching; RSS.NET to help build the various RSS feeds; URLRewritingNet for pretty URLs; and some .NET helper libraries for working with the Amazon, Yahoo, Ebay and Twitter web services.
How many people are using WhatIWantMost?
There are currently about 300 members of the site. I'd say that about half of those are active members who have returned to the site more than once. There are probably about 50 who update their wish lists on a regular basis. The site averages about 6-10 new members a week.
What are your plans for the future of the site?
I mentioned before that I am using the site for my own selfish development experimentation purposes right now. The wish list genre is very big. There are literally dozens of smaller sites similar in size and stature to WhatIWantMost and there are a dozen more big sites that really offer top notch features and functionality. Additionally, every large e-commerce site has its own wish list functionality and sites like Amazon have killer wish list applications. I had no pretense when I built the site of breaking into that top tier, of building a large community, or of making a lot of money from the site. I just built it for my friends and family to use and if other people find it useful and like using it then that is great. I've really not set any goals beyond that. I've maintained a "let's see what happens" attitude. If the site miraculously becomes monstrously successful then I'll have to take a more active approach. Right now I'm just happy that all my family started using it this Christmas!
How much time do you spend on WhatIWantMost?
The initial development time was about three months of evening and weekend work. I'd estimate that I had 100 hours in the development. That's not too bad considering many of the technologies I used were new to me.
As far as continued development goes, it really depends on what new cool thing I find that I want to add to the site. Some months I do nothing, some months I find myself putting a couple of nights work into it. On average I probably put 8-10 hours a month of development work into the site.
I built the site to be as hands-off as possible. It really requires no manual intervention or maintenance. Occasionally I'll correct or add a link to an image or a product if it looks like there was some sort of data entry error on the member's part. Of course I check stats and logs every once in a while to keep an eye on things. Beyond that, the site offers RSS feeds for almost everything. I subscribe to the new users lists, updated wish lists, and the lists of items added to make sure that somebody doesn't try to take advantage of the site or use it distastefully (I've been lucky on that front so far). I would be surprised if I spend more than 8 hours a month doing maintenance.
Thanks to Dan for doing this interview and in the time it took me to post this he managed to churn out another project, a site dedicated to ASP.NET MVC.
If you are working on a cool project and would like to be interviewed please drop me an email and let me know. (javery at infozerk.com)
-James
Comments
- #1 Ryan Cromwell on 7.08.2008 at 10:19 AM
-
What a great theme for a string of posts. Keep 'em coming.
- #2 James Avery on 7.08.2008 at 2:09 PM
-
Thanks, let me know if you see any projects you would like to know more about. I will heckle any and everyone. :)
- #3 Alan Stevens on 7.08.2008 at 9:56 PM
-
Geez, Dan has more websites than anyone else I know!
I hadn't even heard about this one.
Thanks,
++Alan
- #4 Dan Hounshell on 7.08.2008 at 10:35 PM
-
Thanks, James. Great job. Following great interviewing traditions you've made me sound much smarter than I really am!
Alan, I that that one of these days I will have to create a site to list out all my sites!
