My greyhound can run faster than your honor student.

Monday, February 28, 2005

I really like the new nickel.

Saturday, February 26, 2005

I bought a pound of the house blend, Wild Ass, at what I think is my new favorite coffee house. Stupid name for a coffee house, Java Juice, but they roast the coffee right there in the seating section. We will probably go back tomorrow and I will try to get some pics of the place and their roaster. We are heading into the City now for game night at a friend that lives in a highrise. 46th floor I think. Cranium, Outburst, Trivial Pusuit. Stuff like that.
I think I am going to make myself an iced espresso to take with before we leave.

-Brad out.

Friday, February 25, 2005

I've lost 10 pounds this month eating mostly nuts, seeds, Trader Joe's soy powder, soy burgers, soy hot dogs, eggs, cheese, guacamole with low carb tortilla chips, and Lean Cuisine / Weight Watcher type frozen meals for lunches.

I am modeling my intake somewhat on the Atkins and South Beach diets, but not going crazy on the saturated fats. Eggs once a week. Just a little bit of cheese at a time.

My intention is to make this a permanent change in my eating habits, not just a sprint to drop 20 pounds and then start eating Ho Ho's, ice cream, and crap until the 20 pounds goes back on. That is not a healthy cycle to fall into.

The soy protein powder is especially important to me. In the morning I am not usually hungry (I think because of the glycogen that is released from the liver into the blood while you sleep.) A lot of times I would therefore just run out of the house without breakfast. After an hour or so at work the glycogen gets burned up and I am starving. This leads to eating things I shouldn't. Donuts in the break room. Chocolates that they keep in the Impact Fee department. Stuff like that.

For the past month I force myself in the morning to mix three scoops of protein powder with 16 ounces of water and six packs of Equal sweetener in the blender. I knock that back and I don't even think about food until between 11:00 am and 11:30 am. Then I will have a couple handfuls of low salt almonds from Trader Joes and a glass of water. That holds me until about 1:00 pm when I stick a frozen meal in the microwave. Around 3:00 pm I start getting a little hungry again and I will have another couple handfuls of almonds. That has been my habit for the last month, and it is pretty easy to stick to.

On the weekends we have made a meal on a batch of guacamole, low carb tortilla chips, and some shredded cheese to make a few nachos out of under the broiler. That is satisfying and feels indulgent, but is very healthy. It feels like party food when we watch movies. (Avocados are one of the best foods you can put in your body. The oils they contain lower your cholesterol, lower your blood pressure, fight certain kinds of cancer, especially colon cancer, and help your skin. They also have more potassium than bananas and have a ton of fiber. Don't feel bad about the calories if they are displacing other unhealthy fats and calories from your diet.)

It is a danger time if I come home from work in the evening and I am starving. That is when I am most likely to go on a rampage through the fridge. On those days I force myself to make up another 16 ounce protein shake and wait a few minutes until that settles in. Then I am better able to make healthy food choices rather than eating things I will regret.

Thursday, February 24, 2005

Because Sheri is too modest, I am posting the e-mail that her boss sent her regarding the results of the week she worked from home on a big ugly project:

I wanted to forward this to you so you can see what an outstanding job you did with the ### report. We went from over 7,000 vulnerabilities to just over 1,000 as a result of your work. That is what one would call great work! I think the scan should continue to decrease in number, but if you could work on these vulnerabilities over the next week, I'd appreciate it. We look the best of all cities at this time by far, thanks to your efforts.
I wrote this Visual Basic code from scratch yesterday. It works pretty well. It is for my NPDES project. All of the storm water structures in the county that fall within the Chicago MSA area will be surveyed with GPS.

When each point is collected, the field person will also enter into the GPS unit:
- each pipe that enters that structure
- how many inches in diameter each pipe is
- which compass direction each pipe is heading

As the data comes back into the office I need to connect the structures to represent the pipes. This code will put the pipe measurements around the point on the screen in the approximate compass heading. It will look something like this:

48 - -
- · -
- - 48

In this example there is a 48" pipe coming into the structure on the NW side and the SE side. The dot in the middle represents the GPS location of the surveyed feature.This visual representation will make it easier for me to validate the accuracy of the data.

The end result of all this will be a network showing how the stormwater is drained out of the county. It is an EPA requirment. In case of a chemical accident they will use this information to see which areas downstream are at risk, and as a diagnostic tool to find out the source of the spill.

Here is the code:

option explicit

Function FindLabel ([Pipe1Size], [Pipe1Dir], [Pipe2Size], [Pipe2Dir], _
[Pipe3Size], [Pipe3Dir], [Pipe4Size], [Pipe4Dir], [Pipe5Size], [Pipe5Dir],_
[Pipe6Size], [Pipe6Dir], [Pipe7Size], [Pipe7Dir], [Pipe8Size], [Pipe8Dir])

dim N, NE, E, SE, S, SW, W, NW, PipeDir, PipeSize
N = "-"
NE = "-"
E = "-"
SE = "-"
S = "-"
SW = "-"
W = "-"
NW = "-"

PipeDir = [Pipe1Dir]
PipeSize = [Pipe1Size]
if PipeDir >23 and PipeDir <= 68 then
NE = AssignValue(PipeSize, NE)
elseif PipeDir >68 and PipeDir <= 113 then
E = AssignValue(PipeSize, E)
elseif PipeDir >113 and PipeDir <= 158 then
SE = AssignValue(PipeSize, SE)
elseif PipeDir >158 and PipeDir <= 203 then
S = AssignValue(PipeSize, S)
elseif PipeDir >203 and PipeDir <= 248 then
SW = AssignValue(PipeSize, SW)
elseif PipeDir >248 and PipeDir <= 293 then
W = AssignValue(PipeSize, W)
elseif PipeDir >293 and PipeDir <= 338 then
NW = AssignValue(PipeSize, NW)
elseif PipeDir >338 and PipeDir <= 360 or PipeDir >= 0 and PipeDir <= 23 then
N = AssignValue(PipeSize, N)
end if

PipeDir = [Pipe2Dir]
PipeSize = [Pipe2Size]
if PipeDir >23 and PipeDir <= 68 then
NE = AssignValue(PipeSize, NE)
elseif PipeDir >68 and PipeDir <= 113 then
E = AssignValue(PipeSize, E)
elseif PipeDir >113 and PipeDir <= 158 then
SE = AssignValue(PipeSize, SE)
elseif PipeDir >158 and PipeDir <= 203 then
S = AssignValue(PipeSize, S)
elseif PipeDir >203 and PipeDir <= 248 then
SW = AssignValue(PipeSize, SW)
elseif PipeDir >248 and PipeDir <= 293 then
W = AssignValue(PipeSize, W)
elseif PipeDir >293 and PipeDir <= 338 then
NW = AssignValue(PipeSize, NW)
elseif PipeDir >338 and PipeDir <= 360 or PipeDir >= 0 and PipeDir <= 23 then
N = AssignValue(PipeSize, N)
end if

PipeDir = [Pipe3Dir]
PipeSize = [Pipe3Size]
if PipeDir >23 and PipeDir <= 68 then
NE = AssignValue(PipeSize, NE)
elseif PipeDir >68 and PipeDir <= 113 then
E = AssignValue(PipeSize, E)
elseif PipeDir >113 and PipeDir <= 158 then
SE = AssignValue(PipeSize, SE)
elseif PipeDir >158 and PipeDir <= 203 then
S = AssignValue(PipeSize, S)
elseif PipeDir >203 and PipeDir <= 248 then
SW = AssignValue(PipeSize, SW)
elseif PipeDir >248 and PipeDir <= 293 then
W = AssignValue(PipeSize, W)
elseif PipeDir >293 and PipeDir <= 338 then
NW = AssignValue(PipeSize, NW)
elseif PipeDir >338 and PipeDir <= 360 or PipeDir >= 0 and PipeDir <= 23 then
N = AssignValue(PipeSize, N)
end if

PipeDir = [Pipe4Dir]
PipeSize = [Pipe4Size]
if PipeDir >23 and PipeDir <= 68 then
NE = AssignValue(PipeSize, NE)
elseif PipeDir >68 and PipeDir <= 113 then
E = AssignValue(PipeSize, E)
elseif PipeDir >113 and PipeDir <= 158 then
SE = AssignValue(PipeSize, SE)
elseif PipeDir >158 and PipeDir <= 203 then
S = AssignValue(PipeSize, S)
elseif PipeDir >203 and PipeDir <= 248 then
SW = AssignValue(PipeSize, SW)
elseif PipeDir >248 and PipeDir <= 293 then
W = AssignValue(PipeSize, W)
elseif PipeDir >293 and PipeDir <= 338 then
NW = AssignValue(PipeSize, NW)
elseif PipeDir >338 and PipeDir <= 360 or PipeDir >= 0 and PipeDir <= 23 then
N = AssignValue(PipeSize, N)
end if

PipeDir = [Pipe5Dir]
PipeSize = [Pipe5Size]
if PipeDir >23 and PipeDir <= 68 then
NE = AssignValue(PipeSize, NE)
elseif PipeDir >68 and PipeDir <= 113 then
E = AssignValue(PipeSize, E)
elseif PipeDir >113 and PipeDir <= 158 then
SE = AssignValue(PipeSize, SE)
elseif PipeDir >158 and PipeDir <= 203 then
S = AssignValue(PipeSize, S)
elseif PipeDir >203 and PipeDir <= 248 then
SW = AssignValue(PipeSize, SW)
elseif PipeDir >248 and PipeDir <= 293 then
W = AssignValue(PipeSize, W)
elseif PipeDir >293 and PipeDir <= 338 then
NW = AssignValue(PipeSize, NW)
elseif PipeDir >338 and PipeDir <= 360 or PipeDir >= 0 and PipeDir <= 23 then
N = AssignValue(PipeSize, N)
end if

PipeDir = [Pipe6Dir]
PipeSize = [Pipe6Size]
if PipeDir >23 and PipeDir <= 68 then
NE = AssignValue(PipeSize, NE)
elseif PipeDir >68 and PipeDir <= 113 then
E = AssignValue(PipeSize, E)
elseif PipeDir >113 and PipeDir <= 158 then
SE = AssignValue(PipeSize, SE)
elseif PipeDir >158 and PipeDir <= 203 then
S = AssignValue(PipeSize, S)
elseif PipeDir >203 and PipeDir <= 248 then
SW = AssignValue(PipeSize, SW)
elseif PipeDir >248 and PipeDir <= 293 then
W = AssignValue(PipeSize, W)
elseif PipeDir >293 and PipeDir <= 338 then
NW = AssignValue(PipeSize, NW)
elseif PipeDir >338 and PipeDir <= 360 or PipeDir >= 0 and PipeDir <= 23 then
N = AssignValue(PipeSize, N)
end if

PipeDir = [Pipe7Dir]
PipeSize = [Pipe7Size]
if PipeDir >23 and PipeDir <= 68 then
NE = AssignValue(PipeSize, NE)
elseif PipeDir >68 and PipeDir <= 113 then
E = AssignValue(PipeSize, E)
elseif PipeDir >113 and PipeDir <= 158 then
SE = AssignValue(PipeSize, SE)
elseif PipeDir >158 and PipeDir <= 203 then
S = AssignValue(PipeSize, S)
elseif PipeDir >203 and PipeDir <= 248 then
SW = AssignValue(PipeSize, SW)
elseif PipeDir >248 and PipeDir <= 293 then
W = AssignValue(PipeSize, W)
elseif PipeDir >293 and PipeDir <= 338 then
NW = AssignValue(PipeSize, NW)
elseif PipeDir >338 and PipeDir <= 360 or PipeDir >= 0 and PipeDir <= 23 then
N = AssignValue(PipeSize, N)
end if

PipeDir = [Pipe8Dir]
PipeSize = [Pipe8Size]
if PipeDir >23 and PipeDir <= 68 then
NE = AssignValue(PipeSize, NE)
elseif PipeDir >68 and PipeDir <= 113 then
E = AssignValue(PipeSize, E)
elseif PipeDir >113 and PipeDir <= 158 then
SE = AssignValue(PipeSize, SE)
elseif PipeDir >158 and PipeDir <= 203 then
S = AssignValue(PipeSize, S)
elseif PipeDir >203 and PipeDir <= 248 then
SW = AssignValue(PipeSize, SW)
elseif PipeDir >248 and PipeDir <= 293 then
W = AssignValue(PipeSize, W)
elseif PipeDir >293 and PipeDir <= 338 then
NW = AssignValue(PipeSize, NW)
elseif PipeDir >338 and PipeDir <= 360 or PipeDir >= 0 and PipeDir <= 23 then
N = AssignValue(PipeSize, N)
end if

FindLabel = MakeLabel(NE, E, SE, S, SW, W, NW, N)

End Function

' ********** End of main function. Custum functions used above are below.

function MakeLabel (NE, E, SE, S, SW, W, NW, N)
dim Row1Cnt, Row2Cnt, Row3Cnt, MaxLine, _
TopSpace, MidSpace, BottomSpace, TopExtra, BottomExtra

Row1Cnt = len(NW & N & NE)
Row2Cnt = len(W & E)
Row3Cnt = len(SW & S & SE)

' If a row has an odd number of characters, this adds an extra space to make it even
if Row1Cnt mod 2 <> 0 and Row1Cnt > 3 then
TopExtra = " "
else TopExtra = ""
end if

if Row3Cnt mod 2 <> 0 and Row3Cnt > 3 then
BottomExtra = " "
else BottomExtra = ""
end if

' The next two if statements finds how long the longest line is
if Row1Cnt > Row2Cnt then
MaxLine = Row1Cnt
else MaxLine = Row2Cnt
end if

if Row3Cnt > MaxLine then
MaxLine = Row3Cnt
end if

' This makes sure that the longest line will have on space between each section
MaxLine = MaxLine + 2

TopSpace = space(int((MaxLine - Row1Cnt)/2))
MidSpace = space(int((MaxLine - Row2Cnt)))
BottomSpace = space(int((MaxLine - Row3Cnt)/2))

MakeLabel = NW & TopSpace & N & TopSpace & TopExtra & NE & vbNewLine & _
W & MidSpace & E & vbNewLine & _
SW & BottomSpace & S & BottomSpace & BottomExtra & SE
end function

' **********

function AssignValue(PipeSize, DirVar)
' If one of the compass point variables already has a value
' assigned to it, this will append the value rather than overwriting
' it. If there is no value it will just write the value over the
' default dash character.

if DirVar = "-" then
AssignValue = PipeSize
else AssignValue = DirVar & "/" & PipeSize
end if
end function

' ********** End of code

Monday, February 21, 2005

Because it is a vacation day for us, and because we were both a little bummed about Hunter's death, we decided to treat ourselves to some breakfast at McDonalds. I swiped my credit card through the reader after the cashier told me the total, but an error message popped up, so he called his manager. She came over, asked me to swipe my card again, and pushed some buttons. It didn't work, so she pushed a few more buttons to comp our entire meal! I had my hand on a twenty ready for her to say "Sorry the credit card terminal is down. We can only accept cash." But no. Free breakfast. Yeah!
The Edge... there is no honest way to explain it because the only people who really know where it is are the ones who have gone over.

The person who doesn't scatter the morning dew will not comb gray hairs.

When the going gets weird, the weird turn pro.

"...journalism is a terminally lame job, but it's better than working."

I always wanted to be Hunter, but didn't everyone, at least secretly?

Sad

"One of God's own prototypes. Some kind of high powered mutant never even considered for mass production. Too weird to live, and too rare to die."



RIP Hunter S. Thompson

Sunday, February 20, 2005

We both have tomorrow off because of President's Day! Yeah!
Carly Simon's dad is the Simon in Simon & Schuster.

You can go sleep at home tonight if you can get up and walk away

I think the first song I heard on CD was "Who Are You" by The Who. It was on the tenth floor of the Park Hall dormitory on The Ohio State University campus.

What was your first?

Friday, February 18, 2005

I made a resolution to myself today to switch from using shapefiles to only using geodatabases. I think you should too.

Wednesday, February 16, 2005

Does anyone have any success stories or horror stories about their experience with VoIP? I am really tempted to cut my ties with the phone company and go this route.

Vonage service is $25 per month, and my ISP offers VoIP service for $37 per month. We currently pay MCI about $70 per month for unlimited local and long distance, which includes all taxes and fees.

One of my big concerns is number portability. I know I can transfer our current home telephone number to whichever VoIP provider I choose, but since VoIP providers are not regulated, I am worried that I would not be able to ever move my number from them once they have it.

Monday, February 14, 2005

It might be worth your time ($1,500 to be exact) to inspect your change for the rare Wisconsin state quarter that has an extra corn leaf on the back. I received two Wisconsin quarters today, but not the good ones. [story]

Sunday, February 13, 2005

Yesterday afternoon we went to Starbuck's to hang out and read the paper. I wanted an iced coffee, but a lot of the stores only keep a pitcher of iced coffee on hand in the summer time. (They sell iced tea though. Go figure.) The barista suggested an iced Americano instead. I think I like that better than the plain old iced coffee now. The iced coffee is double strength drip coffee that is then stored in the fridge. The Americano is freshly pulled espresso shots, diluted with a little water, and then served over plenty of ice. I add milk and Equal. It has a better fresher stronger coffee taste.

I have some Starbucks's Sumatra beans at home so I just made myself an iced Americano to enjoy while I type this.

We have 5 coffee makers:

Krups espresso machine


Stove top espresso maker


12 cup drip
4 cup drip
Senseo

I have been craving chicken salad for about the last two months. Yesterday evening we went to Bobak's. A lot of times they have rotisserie chickens on sale, and last night they were $2.50 each. We bought two and left them on the kitchen counter to cool while we watched The Grudge. After the movie, at about midnight, I de-boned both chickens and made an excellent batch of chicken salad.

I also made another good batch of guacamole last night. I used fresh cilantro, tomato, and onion instead of using the salsa shortcut.

It is supposed to rain all day today in Chicago. I think I am going to back the car out into the driveway so that some of the heavy salt and road grime gets washed away.

The movies we have in right now from our queue are Ray and Friday Night Lights. I am excited about seeing Friday Night Lights.

We don't know what we are going to do with ourselves today.
I want this watch. It has a 24 hour movement instead of a 12 hour movement, so the hour hand only goes around once a day instead of twice.

Saturday, February 12, 2005

We just got done watching The Grudge. The hairs on my arms literally (not figuratively) stood on end at least seven or eight times. Very scary. Don't watch it alone.

Wednesday, February 09, 2005

Is your computer screen dirty? This amazing little thing will actually clean it for you right now!