gid

August 28, 2006

Oh yeah, we are having a homebirth

Homeschooling, a stay-at-home wife, recycling batteries, co-sleeping, attachment parenting, organic milk, and now a homebirth. Dang! How did I become such a radical crunchy con? I guess I really need to blame that on Leslie because she is the mastermind behind 90% of our radical ways.
I started having a feeling that Leslie was going to opt for a homebirth shortly after Elliot was born. The straw that broke the camel's back was the last night nurse we had at Erlanger East. Just for the record, night nurses are the worst. Being that they are fresh out of school, coupled with the fact that they are bored at 3 a.m., can make for a really bad situation.
What would cause someone to prod and poke a healthy newborn every hour and a half is beyond me. I guess the difference is that of philosophy. Some view birth as a medical procedure in which babies are teetering on the edge of life and death, and others don't. We see birth as a natural process, and we believe the love of life is so ingrained in humanity that even the most fragile amongst us will fight for it.
Right, so our last night nurse, on top of poking and prodding in excess, would not let Leslie and Elliot sleep in the same bed. She started freaking out thinking Leslie was going to suffocate her newborn. If you know Leslie you know that she has very strong feelings about the need of a newborn to feel the warmth and touch of its mother, so with these principles in place, Leslie stood her ground. It basically boiled down to Leslie telling the night nurse that Elliot would be sleeping with her, and what did she have to do to get the nurse to leave the room. The night nurse ended up coming back with a handwritten release that stated that she had warned Leslie and that Leslie refused to listen and that neither she nor the hospital would be responsible for the harm done. Being that Leslie was tired from 12 hours of natural labor and that she just wanted to get some sleep, she decided to just sign the form.
We have been visiting our new midwife for several months now. Her name is Debi Church. She lives in Athens, Tennessee, and is supposed to be one of the best homebirth midwives in the area. I think she has attended something like 700 plus homebirths. Leslie has two friends who have used her, and they both loved their experiences.
I have been meaning to post this picture since last Tuesday. We went to the midwife's house\office last week and as the midwife was finishing up with the fetoscope, Leslie made some remark about not using ultrasounds. Debi whipped around and grabbed a marker and before we knew it, Leslie had her ultrasound picture. I decided to take a picture for the grandparents, friends, family, and lurkers who stop by the blog. Enjoy.
Posted by gid at 09:30 PM | Comments (10)

August 24, 2006

Harold Ford in the house

The company I work for has invited both Ford and Corker to come say hello. Being the political junky that I am, I ran down to get a picture with Harold Ford Jr. I will have to get a picture with Corker when he comes. I was a bit nervous to meet Ford. I kept thinking he was going to ask me for my vote come election day, and I was not sure what to say. Thankfully he did not ask, and it all went fairly well. He was even nice enough to let me take a second picture after my first on did not take.

harold-ford-jr-senate-pin.jpg

They also gave me a lapel pin, which is going to be added to to the other political memorabilia that I have collecting ever since I went to the Republican National Convention back in 88.

Oh yea, I want to thank Andrew for taking the picture.

Posted by gid at 02:41 PM | Comments (0)

August 22, 2006

tent

tent.jpg

I have a lot of things I want to blog about, but I am just too busy right now. Here is a picture I thought was funny. I have been thinking about camping here lately and decided to set up the tent to see what condition it was in. John David and Elliot loved it being set up in their room. Though their mommy did not like it so much... mostly because of the smell.

The picture is fuzzy because I took it through the screen.

Posted by gid at 09:25 AM | Comments (1)

August 15, 2006

serendipity and the frequency of her visits

Here lately I have grown so comfortable in my skin that I need to frequently look down to make sure I have cloths on. To be honest about the situation I have always looked down to make sure I was dressed. The whole checking to see if I was dressed thing would happen to me like clockwork. I would get out of my car and start making the long trek from my car to the office and somewhere around the halfway mark I would realize that in my extreme ability to filter out details that I might have walked out of the house without the proper work attire or worse. What has changed now is that I no longer have that panicky feeling. I just step out of my thoughts realizing that I should take a moment to check and make sure I am wearing shoes, that my zipper is up, and that I am not drooling on myself. When all that checks out I just drift back into my world of mostly repetitive thoughts and insignificant highlights realizing that serendipity will be sending her little kisses my way at any moment. These past 8 months have been life changing for me and one day I might even blog more seriously about them.

Posted by gid at 05:11 PM | Comments (1)

August 11, 2006

gmail part 1

Today I am doing something I told myself I would never do. I am changing to a new "permanent" e-mail address. I have held out the last year or so for excite.com to catch up to google with their e-mail service but today I am saying enough is enough. The amount of spam that I have been getting is more than I want to handle. Also, their block list only allows me to filter out 50 domains or addresses, which is really lame. I guess the really lame part is that they are using the blocking of domains as a primary defense against spam.

In some weird way it is kind of sad to be moving onto a new email address. I have had my current e-mail address for almost 10 years now. It is hard to believe that e-mail has already been apart of my life for that long. It seems like yesterday when Leslie and I were all excited because someone was giving away free e-mail, and that we would be able to communicate while I was at school and she was at work.

I have been using gmail the last year for more business related stuff, but the e-mail service is just too good for me not to make the jump. I am going to keep my excite.com email address until the time seems right for me to pull the plug. I'm sure that will take a year or two until I get to that point. If you would like my new e-mail address then please leave a comment, and I will reply.

Also, if you would like a g-mail account then I would be glad to send you an invite. In post to come I hope to highlight some of the great g-mail features.

Posted by gid at 05:03 PM | Comments (2)

August 10, 2006

Horizontal vs. Vertical Database Design

I was at one point tasked with developing the argument against going with a vertical database design for a particular project. In my research one of the main reasons for going vertical was the null saturation percent of a database, which was caused by the number of columns added to support a very large eCommerce database. As some research projects go I never got a chance to finish, and because I have a feeling that one day in the future I will have to revisit this subject I am archiving what I had done out here on my blog.

The one neat thing that did come out of my research was this query that I wrote to get the null saturation of a MS SQL Server database. If you are curious about the null saturation of a SQL Server database then feel free to play with this query. Depending on the size of the database it could take up to 5 minutes or longer to run. I'm sure the query could have been written better, but it was written for research not as a production piece of code. Also, this query can not be run under the master database.

Download Query (the query in this file will make more sense because it still has some formatting to it)

--Written By David Gidcumb

create TABLE #NumColumnsRowsPerTable(

ID INT

, Name varchar(100)

, Columns INT

, Rows bigINT

, TotalCellCount bigint

, NonNullCellsPerTable bigINT

, NullsPerTable bigint

)

 

create TABLE #Columns(

Name varchar(100)

, NotNullCount bigint

)

 

--Number of Columns per table

INSERT INTO #NumColumnsRowsPerTable

select so.ID

, so.Name

, count(*)

, 0

, 0

, -1

, 0

from sysobjects so

left join

syscolumns sc

on so.ID = sc.ID

where so.type = 'U'

and sc.xtype not in(35,36,34,99) --none nullable types

group by so.name, so.ID

 

Declare @tablename varchar(100)

Declare @columnname varchar(100)

Declare @SelectCMD varchar(2048)

Declare @SelectCMD2 varchar(2048)

Declare @SelectCMD3 varchar(2048)

-- Declare the Cursor for getting Row Count

DECLARE GetRowCount_table_names_cursor CURSOR FOR

SELECT Name

FROM #NumColumnsRowsPerTable

 

OPEN GetRowCount_table_names_cursor

FETCH NEXT FROM GetRowCount_table_names_cursor

 

INTO @tablename

 

WHILE @@FETCH_STATUS = 0

BEGIN

 

set @SelectCMD = 'Update #NumColumnsRowsPerTable set rows = (select count(*) from xxxTABLExxx), TotalCellCount =(columns * (select count(*) from xxxTABLExxx)) where name = ''xxxTABLExxx'''

select @SelectCMD2 = REPLACE ( @SelectCMD , 'xxxTABLExxx' , @tablename )

execute (@SelectCMD2)

 

INSERT INTO #Columns

select sc.Name

, 0

from sysobjects so

left join

syscolumns sc

on so.ID = sc.ID

where so.type = 'U'

and so.Name = @tablename

and sc.xtype not in(35,36,34,99)

 

Declare @NotNullCount int

-- Declare the Cursor for getting Null Count

DECLARE GetNotNullCount_cursor CURSOR FOR

SELECT Name

FROM #Columns

 

OPEN GetNotNullCount_cursor

FETCH NEXT FROM GetNotNullCount_cursor

INTO @columnname

WHILE @@FETCH_STATUS = 0

BEGIN

set @SelectCMD = 'update #Columns set NotNullCount =(select count(xxxCOLUMNxxx) from xxxTABLExxx where xxxCOLUMNxxx is not null) where name = ''xxxCOLUMNxxx'''

select @SelectCMD2 = REPLACE ( @SelectCMD , 'xxxTABLExxx' , @tablename )

select @SelectCMD3 = REPLACE ( @SelectCMD2 , 'xxxCOLUMNxxx' , @columnname )

print @SelectCMD3

execute (@SelectCMD3)

--select @SelectCMD3

-- Get the next table name

FETCH NEXT FROM GetNotNullCount_cursor

INTO @columnname

End

CLOSE GetNotNullCount_cursor

DEALLOCATE GetNotNullCount_cursor

 

Update #NumColumnsRowsPerTable set NonNullCellsPerTable = (select sum(NotNullCount) from #columns), NullsPerTable =(TotalCellCount-(select sum(NotNullCount) from #columns)) where name = @tablename

delete from #Columns

-- Get the next table name

FETCH NEXT FROM GetRowCount_table_names_cursor

INTO @tablename

END

 

CLOSE GetRowCount_table_names_cursor

DEALLOCATE GetRowCount_table_names_cursor

GO

 

select * from #NumColumnsRowsPerTable

 

select cast(((sum(NullsPerTable)*100)/sum(TotalCellCount)) as varchar(100)) + '% Null Saturation' from #NumColumnsRowsPerTable

drop table #NumColumnsRowsPerTable

drop table #Columns

Please feel free to ignore everything below the fold. It was a work in progress that is woefully incomplete.

History
In the past horizontal databases where used exclusively in database design. But, as e-commerce gained in popularity the shortcomings of the Horizontal design began to become apparent. At first the solution was to just add new columns to support the unique attribute of each new product being added. As new columns were added problems unique to a Horizontal design were encountered.
They were:
1. Max column count exceeded (DB2\Oracle 1012 SQL Server 1024)
2. Null saturation of a table would start to exceed 90%
3. Constant Scheme changes due to adding columns
4. Performance issues are encountered when a table is very wide and only a few columns are returned in the query
Vertical Database Design
The solution to the e-commerce predicament was to change the design by taking the attributes (column names) in the horizontal design and making them keys in the vertical design. This change solved all the issues, which occurred under a horizontal design. Though there are problems that resulted which are unique to a vertical database design.
1. Queries written against the vertical design became cumbersome and error-prone.
? Multiple joins to pull back each attribute
? Maximum of 256 tables for each select statement(SQL Server) run query contained in [256 Table proof for Horizontal design.xls] as example
? See file query.sql as example of what needs to happen to pull back data.
2. Current Application development tools are designed for storing data object in a horizontal format. Data displayed in a horizontal format in a ADO.Net datagrid will make no sense to a client. Data would have to be converted from vertical to horizontal to make sense. Again see bullet 1.
3. Logical horizontal views must be written on top of vertical representation
? SQL Server view performance is poor when compared to teradata, and views execution plan must be recompiled when accessed.
4. Data is not strong typed do to the nature of the vertical design, which causes casts or converts to be needed for most attributes (columns) being returned. The biggest issue is that for a large enterprise it removes the natural typing of data at the database level, and instead moves to responsibility to each developer who inserts and updates the data-store.
The decision on weather to use a Vertical or Horizontal data design really depends on the scope of a project. The decision really needs to be made not only by the Data Analyst, but also the developers who are going to be interacting with the data store on a daily bases. Chances are that the Data Analyst left to their own doing will produce a vertical design. It is much easier to design because if a new item needs to be added all that has to be done is a simple insert into a table. But just because it is simple to design it does not mean it is the most appropriate design pattern to apply.
Reason's to Use a Vertical Database design
? Due to the constant adding of products in an e-commerce system i.e. Amazon, eBay and the like, new products with unique attributes are added by adding new columns, which describe the unique attributes of each new product a vertical architecture simplifies the issue for the data analyst. Issues that Vertical Design negate
1. Column count can exceed that 1024 for Microsoft SQL Server
2. Inserts and Stored procedure parameters can contain a maximum of 1024 columns

Reasons to Use a Horizontal Database design .
.
.
.

Views 256 tables is the max in a select statement
Posted by gid at 06:53 PM | Comments (0)

August 09, 2006

Chattanooga's Rape, Robbery, Assault, Burglary, Theft, and Auto Theft rates

I found a link to this site in a Dawn Treader post a few months back.

Five minutes after doing some city comparisons and seeing how Chattanooga compared nationally I decided that Chattanooga needed a new sheriff with fresh ideas. That said, Leslie and I decided not to vote for Sheriff Cupp in his bid for reelection.

If you follow this link and compare Chattanooga's Rape, Robbery, Assault, Burglary, Theft, and Auto Theft rates to cities in our area you will see that ole' Chattavegas has a problem on its hands. I hope our new Sheriff has some good ideas.

I guess I should have maybe asked this question before deciding not to vote down party lines but: Can someone explain to me why the sheriff race is tied to a political party? Of all the publicly elected officials the position of sheriff does not seem to have anything to do with a political party. It has always seemed ridiculous to me when I see an elephant or donkey on a sheriff campaigning sign. Anybody got a good explanation?

Posted by gid at 11:25 AM | Comments (1)

August 08, 2006

ultrasounds could possibly be unsafe

I can't tell you how many times Leslie and I have felt that we were being snickered at because we felt that ultrasounds could possibly be unsafe. From the reading we had done we felt that the research was still out on the safety of ultrasounds, so we tried to limit them with John David and Elliot. And, in the case of her current pregnancy we are not planning on having one at all unless there is a good reason for one. And no, you will never be able to convince me that finding out the sex is a good reason for having an ultrasound. I'm really starting to think that the primary reason ultrasounds are so prevalent is because they make the doctors more money.

From the research I have done, which has not been a whole lot, I don't see any real benefit of having an ultrasound. What I have read says there is no reason to have an ultrasound unless the baby seems small towards the end of the pregnancy or for a few other very rare circumstances which are not treatable until after birth.

Well, read the article for yourselves. I would be interested in your thoughts.

Posted by gid at 11:31 AM | Comments (3)

August 07, 2006

Star Watch update

Star Watch Times Free Press Mailbox Sticker

I called the Times Free Press the other day about the unwanted Star Watch that was showing up at the end of my driveway. A really nice lady answered the phone and asked how she could help. I simply told her that I did not want to receive the star watch any longer. She asked for my address and two days later I ended up with one of these on my mailbox.

I know this is childish, but I don't want the sticker on my mailbox. What gives them the right to put a sticker on my mailbox? I understand that when I subscribe to the newspaper they put the reflective sticker on the mailbox so at 4 in the morning they can easily see who gets the paper. But, I did not subscribe to anything. I called them and politely asked them to quite littering my yard. Shouldn't the sticker only be on the mailbox if you want the star watch? I really should not let this get to me, but I'm too immature for that. Ask my wife. :-)

Posted by gid at 11:20 AM | Comments (2)