I had been thinking about trying to do some of the more complicated ideas for a problem to begin with. But I think I'm going to start a bit easier. In a previous post I talked about information and knowledge. I think after a bit of a search on the internet I have found there is no term in English that describes information and knowledge. So I will start with something to store only information.
Though I would prefer to find a better name, but naming a project is quite a challenge. I wonder if big companies use code names internally for solutions so their marketing departments can figure out the name separately. I heard about an interesting new thing today, it's a mobile network in the UK (only a virtual one based on the O2 network) which has a rather odd name of giffgaff ( http://giffgaff.com/ ). I thought the guy telling me about it was joking, but it was real. A quick Google turns this up from Wikipedia:
"The word giffgaff is an old Scottish Gaelic one that means mutual giving and was chosen to fit with the principles outlined in the manifesto."
So worrying about the name is something I really should make an effort to think about at a much later stage in a project.
My first version of the program therefore might have the following features:
- Basic CRUD (create, read, update, delete) on a list of items
- Record a history of actions on items, e.g. create, update
- Provide a free tagging system to categories the items
I'm thinking of using the .NET Entity Framework 4 and SQLite. that way I don't have to deal with installing a database server to run it and it will make it easier to test with different data.
A feature of the new Entity Framework that is likely to make development and testing easier is the code first development style. An article from MSDN looks like it will be a useful way to setup the testing: http://msdn.microsoft.com/en-us/library/ff714955.aspx .
Though the first stage will be to plan out the idea, then develop the database design. After that the coding can begin with the core of the application that will be unit tested. Finally the GUI can be setup to use the developed and tested code.