What Is a Match?
Notice that words like "match," "like," and "agree" are in quotes, as these are set by scores. In the first version, the meanings of these will be hard-coded. In version 2+, these will be adjustable by the user so that the user can fine-tune the effectiveness of the program.
An exciting alternative to having the user twiddle these settings is to have the program adjust its own heuristics by checking the rating the user gives to books, against what might be predicted. This will allow the program to fine tune itself as it gains more information, on a per-user basis.
For example, suppose I have rated ten books, and there are 500 people who have rated these same books. The program can compare my rating for each book against the average match rating and optimize accordingly. As I rate more books, the system can adjust its internal meaning of "match" and "like" and "agree."
In addition, we can add a slider or other control to the ASP.NET program to allow the user to tighten or loosen the criteria, finding fewer or more matches respectively, and we can record this in the user's personalization record so that it is "sticky" and the user does not have to repeat the adjustment for every login.
Building the Project
At the risk of receiving a great many indignant emails, that is my entire specification, and my entire design, for now.
With this sketch in mind, I'll start building the project, taking the well-tested methodology of "Get it working and keep it working" (sometimes called "successive approximation" and sometimes called "painting yourself into a corner").
In any case, I'll start building it with the spec I have, and see how it develops. I have two incredible luxuries:
- I am the initial client, architect, and developer all rolled into one. (Ahh, bliss!)
- You all are the spec, code, and design reviewers, and I'm willing to bet you won't be shy about giving me feedback.
I'm sure the specifications will evolve as I go, and I'm certain the design will change as I see opportunities or run into obstacles. My promise to you is to keep careful notes. In subsequent columns, I'll review problems I ran into, and discuss what I hope will be interesting design or implementation issues discovered along the way. I'll also post a link to the work in progress and discuss aspects of the code developed to date.
This is not an open source project, but you are invited to kibitz, criticize, suggest, etc. Please do not send me code, but do feel free to post feedback.
 Project Concord: I'm told that Microsoft names its projects based on towns near Seattle. I've chosen to name mine after towns near Boston ("Cradle of Liberty").
 You have to join Delphi to participate in the forum, but it is free.
Jesse Liberty is a senior program manager for Microsoft Silverlight where he is responsible for the creation of tutorials, videos and other content to facilitate the learning and use of Silverlight. Jesse is well known in the industry in part because of his many bestselling books, including O'Reilly Media's Programming .NET 3.5, Programming C# 3.0, Learning ASP.NET with AJAX and the soon to be published Programming Silverlight.
Read more Liberty on Beta 2 columns.
Return to ONDotnet.com