Between preparing for and attending CodeMash last week and catching up on work that was waiting for me when I got back from CodeMash I haven't had a lot of time to work on WhatIWantMost. Yeah, I know, woe is me. You don't want to hear about my troubles, you just want to read about me pumping out code. Sorry, no code for you today folks, but I did want to provide a bit of a status update so you know that I'm not slacking... too much.
While at CodeMash I attended Dave Donaldson's session on NHibernate. If you remember back to the beginning I was on the fence on whether to use NHibernate or .netTiers for this project. I chose to go with .netTiers, though now I'm really struggling with ripping out the .netTiers stuff and going with NHibernate. It's not that the .netTiers stuff isn't any good, in fact I am more than pleased with it. It's just that I've already played around with .netTiers for a while and I'm really itching to work with NHibernate. Now I could alter the .netTiers templates to use NHibernate, but I'm not feeling that ambitious. The main drawback with switching to NHibernate at this point would be that I would have to code up all my business entities, collections, and managers for those things. It's not that big of deal because there really are not all that many for this project - it is a pretty simple site. After much contemplation I have decided that I will see this project to completion with .netTiers. Afterward I may decide to rewrite it using NHibernate, but that's a whole 'nuther series of posts.
I have not forgotten my promise to get back to serious business, but I was checking out my "sidebar flair" (most recent users, most recently updated wishlists) and I realized there was something missing - most popular items. My next task will be implementing that and then I will move on to more serious business, I promise. For calculating the most popular items I think that for now I will have to rely on something tangible, like the Amazon ID of an item. This will of course exclude any items that have not been identified by an Amazon ID, but until I build a fancy text parsing engine for pattern matching of the free text "product name" entries the Amazon ID is all I've got.
Finally, while thinking about real-world usage of the site I came up with a couple more user stories. The functionality that I currently have planned does make it easy for a person to keep track of their own wishlist. But what about the person buying for people who have their wishlists on WIWM? Currently there is no easy way for them to keep track of those people or the items they've chosen to buy for them other than by visiting each individual's wishlist page. It would be very cool if Grammy Edna had one page that she could pull up before she left home (or pull up on her mobile device while at the mall!) that would show all the items that she's decided to buy for her three grandsons who each have a wishlist on WIWM. While I hate to pile on new functionality at this point, I think this newly discovered piece is pretty important, if not critical. Luckily we're running an agile project here and I can make those decisions. If I have to bump something else to get it into the feature list then I will. I'll have the client talk to the PM and lead developer and let them work it out:
Dan (Client): I just thought of this great new piece of functionality I want to add to the site. I've written it all out on this bar napkin. What do you think?
Dan (PM): Well, we can add it, but you know we might have to alter the schedule a bit or drop some lower priority items to make it fit. Let me ask Dan what he thinks.
Dan (Developer): Me and the development team just played the Estimating Game with this new functionality and we think we can fit it in by extending the schedule an additional week.
Dan (Client): What schedule?!?!?
All: Ha Ha Ha. Dan, you're so funny!
Dan (Client): Sounds good - DO IT!
Dan (Account Rep): No problem. Now where's that check you owe us.
Dan (Client): After your developer delivers something I'll consider it.
Dan (Account Rep), Dan (PM), Dan (CEO): Get back to work, Code Monkey!!!
That's it. TTFN.