On hold for AT&T to start the cross-upgrade process. Me: iPhone 4 → iPhone 4S. Tammy: iPhone 3GS → iPhone 4.

Perfect.

Dennis Ritchie’s passing makes me want to go back and re-read The C Programming Language.

Making Soup in Vitamix

One of the things that wowed Tammy about the Vitamix was that you can make soup in it. Real soup. Not some cold Gazpacho. Honest to goodness hot soup. If you run the Vitamix on high for several minutes the blending action will bring the water to a boil!

She put all the ingredients in the blender, turned it on for several minutes and we had some nice, hot soup. Here is proof with my infrared thermometer.

Beautiful Jacks

Homelink Entertainment is doing all the low voltage work in our remodel. One of my goals in the project has been to have cutting edge infrastructure in a 1920’s house. Thanks to the meticulous detail of Ben from Homelink, it is happening. Look at this plate! Labeled Cat 5 runs down to the rack, proper speaker terminations, coax in a separate coax patch field. Awesome.

Remodel Update Week 18

There are still a number of things on our punch list, but, the remodel is done! When we started the project it was expected to take 16 to 20 weeks, and we ended it right at 18. This week the flooring was installed, the electrical was finished, the network and other low voltage infrastructure got punched in and the security system was turned back up. The carpet was an amazing transformation. In one day the space went from a construction zone to a place you walk around in bare feet and goof around with the kids in.

We love everything about the new spaces we created. We wouldn’t change a thing. We’ve moved a bunch of our stuff back in and the rest of it will come together in the next couple of weeks. This will be the last set of weekly photos I post. I will do another final wrap up post when all the furniture is in place to show what it looks like when completely done.

I’m posting more photos than normal for the final recap. You can see there is still another day of painting to be done this coming week, and the AV guy will be out to install the in-wall speakers and put TV’s in place.

Vitamix in the house

I think everyone knows that I’m the gadget guy at our house. Tammy will often cite that she is anywhere from ambivalent to gadgets, to occasionally finding them outright annoying. With that background, it was a bit of a shock that on a recent visit to Whole Foods she was captivated by the Vitamix. Next thing you know we have one in our kitchen!

The Vitamix is tangentially related to our 30 Day Vegan Challenge. There is a lot of food that you can make using wonderful whole ingredients and a ridiculous blender. We’ve given it the rounds this weekend with some smoothies to get things going and they are awesome.

As a guy that is very familiar with the highest end blenders around I’m very impressed. For years I’ve had a BlendTec and I’m a big fan. The BlendTec is a ridiculous blender as is the Vitamix. Both have areas of specialization, but so far I’m amazed at some of what the Vitamix can pull off.

Tyler Double Doodling

Tyler has been having a great time playing with the Magna Doodles lately. He will not just play with one. He has to have both. And he mostly enjoys carrying them all over the house. Occasionally he will stop to scribble on them. But only for a moment and then more carrying.

Jobs Cake

We have a lot of Apple people at 8thBridge. On Thursday we marked Steve Jobs’ passing with a cake in his memory. The screen dimensions on the frosting iPhone are a bit Android-ish, but a great decorating job nonetheless.

Building git, so I’m installing about 200 packages first. That makes sense. 😕

Got my iPhone 4S pre-ordered!

Great night for Minnedemo! Thanks to St. Thomas for hosting. 8thBridge demoing tonight! Watching Mike Bjerkness changing the code on the demo. 14 mins to go. Hope the git push works! 😀

Steve Jobs, t_hero.png

My friend Kent found this and commented on Facebook about it. I wanted to capture it for posterity. On Apple’s website the tribute to Steve Jobs has an appropriate file name, t_hero.png. (see the highlighted code in the inspector window under the page.)

gapingvoid: Rays

My daily gapingvoid cartoon showed up in my mailbox this morning with Gloop. It seemed like a good message for the day.

This is a character I created when I was in college named “Gloop”. Still, he turns up as a makeshift alter ego in drawings every now and then. Gloop represents the human spirit that is still fighting to keep its dignity and self-belief when circumstance humbles us beyond all recognition. It represents the little voice in the back of our minds assuring us that hope does spring eternal even in the worst of times. This is for all of the start up guys, the going-deeper-into-debt-grad students and all of us who know that by believing in ourselves we will wind up in a better place. About those rays of hope—they’re still there and we still need them.

Always Connected — I’ve talked to some of my super-wired friends about what I call “digital fatigue”. This is it.

Seems one of Google’s best known bloggers is copying Tammy and I on his most recent 30 day challenge: going vegan!

Soccer with Puddles

Mazie had a soccer game on Saturday. The field had a few puddles on it. The kids had no issues playing through.

Remodel Update Week 17

This was a big week for the project! The painting is mostly done now. The final colors are on all the walls, the tape is off, the trim is all painted. The railing is finished above the mudroom and I’m really excited about the space up there. I’m completely sold on putting a door in next year. The utility and electric rooms are complete enough that we were able to move a bunch of stuff back in. I was super excited to get the network and low voltage systems coming back together. Both built-ins were completed as well. The fence was installed around the egress window wells. One of the carpenters even came on Sunday and finished the railing on the front door and the new surround around the front door.

The coming week should be the last big week. The final electrical work is starting on Monday. The cork flooring is installed in the exercise room on Wednesday, and carpet is the next day. The theatre and network wiring should be all done as well. We’ve now taken down the plastic barrier in the kitchen so we can now get into the new space without going outside. Just a bit more now!

Marathon Morning

It was a beautiful morning to walk over to Minnehaha Creek and watch the Twin Cities Marathon.

Detect Slow Cacti Polling

I’m a big fan of graphs, and as such am a big fan of Cacti. I’ve used it at work and at home. It’s a wonderfully powerful, and ridiculously complicated front-end to RRDTool, which is also wonderfully powerful and ridiculously complicated. I’ve used Cacti to graph hundreds of servers, the temperature in my house, heat collected from solar panels and Twitter followers.

By default Cacti runs a poller every 5 minutes to collect data. Cacti gets very unhappy if the time required to run the poller exceeds the 5 minute interval. You will get blank data gaps and there aren’t any alarms that go off when this happens. Polling times can also vary without any changes in Cacti. If you are polling an external service and it gets slow, that could spike your polling times up in a terrible way.

I decided to write a quick script to catch this. Rather than integrate it into Cacti’s poller I made it completely separate. Save this script to a shell script and add it to /etc/cron.hourly and you can rest easily knowing your Cacti poller is healthy.

#!/bin/bash
#
# by Jamie Thingelstad

# Where is the log?
CACTI_LOG=/usr/local/cacti/log/cacti.log

# Sample up how many lines?
CACTI_SAMPLE=24

# Warning level for 5 minute poll interval, in seconds.
# Nonsensical to set this higher than 300.
WARN_AT=240

# Where is mail?
MAIL=/usr/bin/mail

# Where to send warning? What subject?
ERR_TO="bad-things-happening@youremail.com"
ERR_SUBJECT="[Cacti] Cacti Poller time is too high"

# Scan the cacti log and see how things are
# Grep for STATS \
# Get the last CACTI_SAMPLE samples \
# Find the duration field (cut) \
# Remove the label (cut) \
# Strip the decimal points, make it an integer (cut) \
# Add the total of all the samples and count the number of samples (awk) \
#   - this step is needed because the file may have < CACTI_SAMPLES in it
POLL_DATA=$(grep "SYSTEM STATS" $CACTI_LOG | \
            tail -$CACTI_SAMPLE | \
            cut -d " " -f 7 | \
            cut -d ":" -f 2 | \
            cut -d "." -f 1 | \
            awk '{ sum += $1; count++ } END { print sum, count }')

# Get the two variables we want
TOTAL_TIME=$(echo $POLL_DATA | awk '{print $1}')
TOTAL_COUNT=$(echo $POLL_DATA | awk '{print $2}')

# Figure out the allowed time as a multiple of WARN_AT
AVERAGE_TIME=$(($TOTAL_TIME / $TOTAL_COUNT))

# Check how long it took and warn if too long, in seconds
if [ "$AVERAGE_TIME" -gt "$WARN_AT" ]; then
    # Polling is exceeded limit, send warning
    ERR_MESSAGE="Polling time for cacti is dangerously high. Last $TOTAL_COUNT polling periods averaged $AVERAGE_TIME seconds, higher than $WARN_AT second threshold."
    echo $ERR_MESSAGE | $MAIL -s "$ERR_SUBJECT" "$ERR_TO" >/dev/null 2>/dev/null
fi

Some notes on what this script is doing:

  • Sampling 24 lines means 24 five-minute polling periods, in other words, the last 24 * 5 minutes, or 2 hours.

  • The script will calculate the average of the last 24 (or fewer) samples and alarm if it is over threshold. One sample over the threshold won’t matter since it uses the average.

  • The awk complexity is used to deal with a new log file that has fewer than CACTI_SAMPLE events.