Project Intro – YAMTS

I talked last time about coming up with my own sample application to use as a framework for learning various Microsoft technologies like Silverlight, WPF and WCF.  I ended up deciding on a book tracking web site, books being one of my great passions.  I spent the rest of the post in describing the mission objectives for the web site.

Actually, it wasn’t quite a slam dunk to pick book tracking as my sample application.  My second choice, representing another great passion of mine, was to do a web site to track movies and DVDs.  I’m hugely passionate about movies and DVDs and I’ve always wanted a killer app that helped me keep track of DVDs that I own and movies that I’ve seen or want to see.

Since I’m a glutton for punishment, I figure that I don’t have to actually pick just one of these two applications.  Why not build both?

So, with that, here’s my 2nd sample application, also already registered with as a bona fide domain: – Yet Another Movie Tracking Site

Another obviously lovely name.

Mission Statement

As with the book tracking site, the first thing to do is to state what this little movie application is going to do:

The purpose of the movies web site is to keep track of the movies that I own, movies that I’ve seen and the movies that I want to see.

Perfect.  A nice parallel to a book web site.

Mission Objectives

And, just like before, we also need to lay out some “mission objectives”.  This will be a short list of things that my little movie application is going to let a user do:

  • Keep track of all DVDs that I own
  • Keep track of all movies that I’ve seen
  • For the movies that I own, keep track of whether I’ve seen them or not
  • Access a list of all my movies from the web
  • Access all my movie lists from the web
  • Keep track of all movies that I want to see
  • Record my impressions/thoughts, for movies that I’ve seen
  • Keep track of recommended lists of movies to see (e.g. AFI movie lists)
  • Track my progress as I try to see all movies in the lists
  • Share my movie lists with other people
  • Let other people track their own DVDs
  • Let other people track their own lists of movies that they’ve seen or want to see
  • Keep track of movies-seen and movies-to-see for various family members
  • Browse through movies by genre or actor
  • Browse through lists of award-winning movies
  • Organize my DVDs by genre and topic
  • Organize my list of movies to see by genre and topic

Once again, this got a little bit out of control at the end.  But you get the idea.

Where Are We?

There you have it, a second candidate for a sample application.  Next time, we’ll also do some data modeling for this guy, too.

Project Intro – YABTS

As I play around more and more with new technologies like Silverlight, WPF and WCF, I create a lot of little sample applications. Invariably, I start off with little hello-world and click-the-button applications. But Hello World gets old quickly and I’m tired of all the usual suspects when it comes to Microsoft’s lineup of sample applications. (Do you remember these old favorites: Northwind, Fitch & Mather, Duwamish and Adventureworks)? Given how bored I am with these samples, I’d rather just create something that’s closer to a real-world application.

Besides, there’s really no better way to learn a new technology than to try to use it to build something real. Tiny sample apps can only go so far. At some point, you have to roll your sleeves up and actually build something if you want to become really familiar with the technology.

I’m not looking to come up with some big plan for a brilliant new web site here. I just want to pick a problem/domain area that’s sufficiently interesting to me that I’ll be motivated to build something cool.

It also wouldn’t hurt if what I build will be at least marginally useful.

So I have the following requirements:

  • Domain area should be something I’m very interested in
  • Application should be something that I can really use
  • Data model should be sufficiently rich to be interesting


There’s really no contest.  I’m a lifelong bibliophile and I’ve taken many stabs at trying to catalog and organize my book collection over the years.  I’m guessing that I’ve started scratching out a database schema for a Books-I-Own database at least a dozen times in the past 20 years.  Just give me a boring corporate meeting and a sheet of paper with a little whitespace on it and I’ll invariably start sketching out an entity relationship diagram.

So that’s my choice for a sample real-world application: a book tracking application/site.

Mission Statement

Let’s start off by at least defining what this thing is going to do. For the moment, let’s assume that this is going to be some sort of database-backed web site.

Here’s my mission statement:

The purpose of the books web site is to keep track of the books that I own, books that I’ve read and the books that I want to read.

Short but sweet and even a little bit ambitious in its scope.

How About a Name

I’ll get tired pretty quickly of calling this thing “the books database” or “the books web site”.  So we need an honest to God site name with an associated domain name.

This is the point in a new project, even a sample project, when you can easily lose many hours on the site, trying to find a domain name that doesn’t suck and has at least a couple of vowels.

I won’t waste my time trying to find the holy grail of domain names for my little book database project.  Instead, I’ll just pick something sort of short that I think I can remember.  After 10-15 mins of godaddy’ing, here’s what I came up with: – Yet Another Book Tracking Site

That’s perfect:  an honest-to-God 5-letter domain name that I can actually remember.

Mission Objectives

The next step is to define some basic “mission objectives”.  These are the very high-level statements of what my little application is going to do.  I’ll try to stay very firmly in the realm of What, rather than How.  I’m also allowing myself to be a little bit ambitious or even grandiose–this is my “dream list” for the book tracking site that I’ve always wanted.

YABTS Mission Objectives:

  • Keep track of all the books that I own
  • Keep track of books that I want to buy
  • Keep track of all books that I’ve ever read
  • Keep track of recommended reading lists
  • Keep track of specific books that I’d like to read
  • For the books that I own, track whether I’ve read them or not
  • Record my personal thoughts (review) for the books that I’ve read
  • Store specific notes on some of the books that I’ve read
  • Track book lists and collections for other people, too
  • Publish my book collection information to the web
  • Keep track of books that people have borrowed from me
  • Share reviews of books that I’ve read with other people
  • Find other readers who share similar book interests
  • Track my progress as I work through “great book” lists
  • Let people browse the “great book” lists all in one place
  • Let people create their own recommended reading book lists
  • Organize my reading lists by subject
  • Organize my book collection by subject

Okay, I had to pull the plug on the idea-generating fairy after about 5 minutes.  What started out as a simple list of books that I own just kept growing and growing as I thought of more and more “must have” features.  But this list will do fine for now as a starting point.

Where Are We?

That should do for the time being.  I now have a vision for a sample application that I can actually get sort of excited about.  I’ve made a list of all the stuff that my application should do and I’ve payed my  money to to get my domain name.

Next time, I’ll continue by diving into some actual data modeling.