Sometimes it’s good to be a geek

Today I’m in Dallas, attending a NASA meeting in hopes of finding ways to expand our web application amongst various groups within NASA. It’s at a Marriott hotel, so I spent the bulk of the day in a conference room watching presentations. Between those presentations (and, I admit, during some of them), I was checking email and writing to various people.

A bunch of my emails bounced back to me as undeliverable because the receiving servers refused them. Apparently the outbound IP address here at the Marriott is on a spam blacklist. Awesome. Most likely, some enterprising guest (or many of them) decided to use the hotel’s wireless connection for their fun and profit at some point. The bottom line was that I couldn’t send email through my servers because the origination point was being blacklisted.

Fortunately I’m a geek. After a few minutes’ thought, I set up an SSH tunnel to one of my servers and used it to route SMTP traffic through a local connection. I was able to completely bypass the hotel’s IP address as an origination point for the email, and when I re-sent those blocked messages, all was well. I kept the tunnel up for the rest of the day, and all of my ongoing messages worked fine.

Bam. SSH tunnels rock.

Now that’s a tooth

Zack has the same problem Laralee and Alex do: he doesn’t have any permanent canines in his mouth. So he has baby teeth that don’t have anything above them, and they’ll never get pushed out of his gums. That’s not entirely bad– Laralee was over 40 when we finally had those two baby teeth removed as part of her whole braces saga. But we had Alex’s removed, and the orthodontist was able to shift some things around with Alex’s braces to make his mouth look good. Now it’s Zack’s turn.

The dentist told Zack he could attempt to pull the tooth himself by wiggling it over the span of a month or two. Since it’s just a baby tooth, working on it can eventually loosen it so it can be pulled. That would save us the $80 extraction fee for the dentist to remove it. So Zack worked at it– every time he was watching a movie or reading a book, he’d be tugging at this tooth. But he didn’t feel like he was really getting anywhere.

Yesterday he visited the dentist to have some cavities filled, and Laralee decided to go ahead and have the tooth extracted. As it turns out, it seems unlikely Zack would have been able to pull it himself by just wiggling it:

zack-tooth

That little sucker had a root that was about 3/4″ long! It wasn’t going anywhere…

Saving the world

My latest board game is Pandemic, which is pretty quick to play and a lot of fun. In it, diseases are breaking out all over the world and it’s a race to cure them before they cause outbreaks and epidemics.

pandemic-1

pandemic-2

The game developers did a good job of balancing things so the game is a bit of a white-knuckler. You’re either right on the brink of disaster when you triumphantly save the world, or the diseases explode out of control and kill billions. A nice way to spend an evening!

Ack… bar

I’m toying around with a new Linux command-line tool called ack. It’s a replacement for the old standard, grep. Possibly the best feature I’ve found is the “bar” option, which does this:

# ack --bar
                      ?IIIIIII7II?????+
                   ~III777II777I?+==++==+:
                  ???I7I???I7II++=====++===
                 ??+??????????+===~~=+++??==+
                ??+??II??????+==~=~~=+++++==++
               I+?????????+?+====~=~==+==++?==?
              ?????II?????+++++=======?===~~~~==
            ,?????II????????++++====~===::~~~~:~
            I?I??II?+++??+?+++==~~~~:~:~:,:,,:::~
           I??????+==+???++++=~~:~:~:,:::,:,,,,,::
          +I?++++=+=+????+++=~~:~~:::,,,,::,,,:,:
          I??+?+====+???+++===~~::::,::,:,,,,,,::
         I????=~===++?+=+=~==~:~~:,,,,,,,.,,,,,:~
        =??+?=~~~~??+?+===~~==,==~~~~,,,,..,,,.:=
        II++==~~=++++++=~~=~,~+=?+?=I?++=..,.,,:
     IIII?+?=====+~+++~=~~~:::=~+~===:,,,,,.,.::
    I?=?I+??+=~=~?I?=+=~~~::,~~=~::~=::,,,,,,::       ---------------
    ?+I??++=++~,::+++~~~:::,,=~~=,~,..,::.:          / It's a grep! /
    ++=+?++~=:~::I+,~=:~,:,,,,:~~......::~,,,        ---------------
     ~=~=:.++~:,.,~=::::.,,:,.:~,:=...==~,::              /
     =~?++??+=~~,.:?~.:,:,,,.,::,,~:=~=::,~              /
     ++~~:~===~:~,.~::,~=~.:,..,:,,:==:.,:7             /
     ~~,::...:=:,::+:~:.,~,...,.,,,,::~,,::~=          /
      =~===+=~~,.::,,,:::,..,,,,,,,,,,,:,..,=+?
      ~=~=~::~~~::,.,,,~:.+,..,,,,..,,,,...,+I?
      ~==~:~~:~~,~=~~:,:~,:,,,,,,....,,,..+?I?I
      ~=~=+,:~:=,:~~~~~~::::,.,,.,,.,,,..~+????I
      ~=~==~=:~~:,~~~~~:::,::,.,,,..,,,I77I?+??II
      +I7:::~~=~:,::~~~~.=.,~,,,,...,~7III?+??II7
     777?+~:=~=~~:,::~~:::.,,,,,,,,,777II??I777777
     777I==:=~::~~~~::~:::,:,:~:::,777I???777777777
    7777+,~===~:~:~~~~:::,.~:=,,:777II???77777777777=?
    777I~,~~~=~::~:,:,,,:=~~,,:7777I???I7777777777+=++
  I7777I,,:,.==::::,:,,,,::::7777I+??I77777777777??I7I7,
 ,77777I::,..~~:,,,,,,.,:~I7777I+??I777777777777?I7777777,
 77777777,...~~:,,,,,.,77777I7???II777777777777+?7777777777
77777777777:,~~~,,=7777777I???II777777777777777+77777777777
77777777777777777777777I+7?7II77777777777777777+777777777777

Genius!

Brrrtimate

Today we played our first lunchtime pickup ultimate game of the year. At game time it was about 24 degrees. Brr. The field was covered in snow, of course, and it was about four inches of hard crusty stuff (from two snowfalls ago, melted and re-frozen) covered by about two inches of powder (from our last snowfall). So it was a bit treacherous, but we managed to crunch through it and over the course of running during the game, we carved out a field-shaped area of packed snow.

It was great to get out– it’s been about a month since I played, and I really needed the exercise. Oof.

Icy ice

It was bitterly cold last night, so when we woke up this morning, the trees had a really pretty layer of ice crystals on them. I took a few pictures.

icy-branch

icy-branch-2

Dad says it’s hoarfrost, possibly from the calm, dense fog we had last night. Cool!

Home remedies aren’t always remedies

The headlights on my car have been foggy for a while– there’s a natural build-up of grime that eventually makes the plastic look dull, with a corresponding decrease in brightness of the lights. When I talked to the local Honda shop, they said it would cost $80 to clean them.

So I poked around the internet a bit and found many people who recommended a home remedy: buy a tube of toothpaste and rub the toothpaste onto the headlights. There’s a slight abrasive in toothpaste, and it can remove the grime. Hey, better than $80, right? I bought a tube of high-quality toothpaste for 98 cents.

pepsodent

Then I spent about ten minutes rubbing it onto the headlights and cleaning it off. The result? No change at all. Sigh. I guess home remedies aren’t always home remedies.

Steps

Laralee has an old pedometer that’s been sitting on her bookshelf for… years, I guess. I picked it up the other day, more out of curiosity than anything else, and decided to find out how many steps I take in an average work day. I strapped it on in the morning as I headed to the office, then checked it that evening.

The answer? About 1,200 steps. That’s pretty horrible, considering everyone is “supposed” to get around 7,000 in a day. Other than buying a treadmill and setting it in front of my standing desk, I’m not sure how to be that active during my days in the office. But it does tell me I need to do something to get some exercise! The cold January weather has cancelled our pickup ultimate games, although I hope we’ll have a chance to play a few times later this month. That’ll rack up some steps!

This afternoon it’s about 25 degrees but sunny, so Laralee and I decided to take a walk around the neighborhood. I grabbed the pedometer, again out of curiosity, and when we returned to the house I figured we’d probably done around 2,000 steps. I was wrong.

steps

Hah, one walk a day will pretty much give me my “recommended daily allowance” of steps! This was a little over three miles.

Next up: wearing it during an ultimate game to learn how many steps (and miles) are involved. That’ll be interesting.

Shiny and new

Mom decided she’d like to try her hand at blogging, so I set up a new WordPress installation for her. It should be fun. As part of that exercise, I decided it was time to update the look of my own blog. I’ve had that old black thing for a while, and it didn’t perform very well on small screens, and also had a number of code-level customizations that I had to maintain through upgrades to the core system.

I shopped around a bit (and by “a bit” I mean about three minutes) and found a nice simple template that suits me well. After about four more minutes of customization, I’m happy with it. So here it is.