Playing with Legos

December 23rd, 2009

It was so quiet today I had to think of what I wanted to do most instead of what I needed to get done most quickly. I get nervous when this happens because I am thinking there is probably something I urgently need to do and I have just forgotten it.

I made it to the end of the day without any horrible recollections, so those fears brought forth nothing today.

I worked on a database. I love working on the design of a brand-new database. There are an infinite number of facts in the world; the trick is acquiring those facts, remembering them, and putting them into relationship with each other so that you can see the meaning of the facts. Brains do this; often they are so efficient about storing the information that the individual facts disappear completely and only the meaning, derived from the relationship between the facts, remains. Certainly my brain loses facts with amazing speed even as I accrue knowledge.

A database cannot make meaning, but it can greatly help the entire process up to that point. A database must do more than store facts; otherwise, it is just a scoop out of that infinite sea of facts. Some older databases sadly prove this point, able to do little more than store data in an orderly fashion and retrieve it when requested. To be of much value, a database must keep track of what has changed about the data and what has caused the changes.

But, as anyone who has tried to reason anything out knows, the question of cause can go on forever. In order to answer the questions people will actually ask you generally need a lower level, more detailed set of data than what they are asking for; this lower level provides the hooks and loops you need to link your facts together and pull out a story, a string of information that actually tells you something.

It is those hooks and loops that you must design into the database when you start. You have to look at the bits of data you will be able to collect, imagine what kind of questions people willl want to answer with the data, and think about how those bits of data will have to be hooked together to help answer those questions.

What makes this fun is not building all the little hooks and loops, but imagining as you do so all the questions you will be able to answer that nobody could answer before. As you work on it and think about it you start to realize how you might be able to answer important questions that nobody even thought to ask before. And that, of course, means that you are a genius.