There’s something satisfying about seeing a particularly complicated database query’s execution time go from 0.7 seconds to 0.02 seconds. I’m working on a tricky report for a client whose database has tens of millions of rows, and I was becoming frustrated with the sluggish queries. So I sat down and started looking at the query, testing its performance, until I saw a couple of fields that I could index. I ran a few commands to do so, and BAM, it sped up by a factor of almost 40.
A wise man (I think it was Brian) once told me that the solution to most database query performance problems is to “index the crap out of it”. So true.
I couldn’t let a sunny 60-degree day in February go to waste. I joined five die-hard friends in a game of Durango boot (a variation on ultimate) at lunchtime today. We played on a slushy, snowy field, and 15 minutes into the game none of us could feel our toes any more. But we were slipping and sliding and having a great time. Ahh, February in Colorado…
I thought there was some kind of law that says the only people who can call me “hun” are women over the age of 60. Coming from a matronly older woman, it’s kind of an endearing term. Coming from the 20-something sandwich artist at Subway today, it somehow seemed wrong.
Today I was driving and my tire pressure light came on. Sigh. It does this about every two weeks, and I drive over to the nearest gas station and fill up the tire again. It costs a dollar in quarters every time, but I figure it’s cheaper than buying a new tire.
I returned home, parked in the garage, and as I was heading into the house I heard a hissing sound. Looking more closely, it was that same tire… hissing as the air escaped at a steady rate. Sigh.
So I drove over to the local Tires Plus and asked them to plug it. They told me they’d call me with an update. A few minutes after I returned home, they called to say there was a huge nail in the tire and it wasn’t reparable. I’d have to replace the tire. Sigh.
Well, you never replace just one tire– you need to do at least a pair. I asked about that, and he said, “All of your tires are pretty much bald. You should replace all of them.” Since it’s winter, and in fact snowing pretty heavily today, I suppose it makes sense. So sure, go ahead and replace all four tires. Sigh.
“Oh, and by the way, your alignment is way off.” How much is that? Another $150 for an alignment today and for the rest of the lifetime of the car (actually not a bad deal). Without the alignment, the tires will wear unevenly and all sorts of other bad things. I suppose I also won’t be able to drive on I-70 through Kansas without touching the steering wheel. So sure, let’s align everything too. Sigh.
$800 later, I walked out of the shop. All because of a nail.
On a humorous note, “that escalated quickly” reminded me of the old “I saw a spider” meme:
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.
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:
That little sucker had a root that was about 3/4″ long! It wasn’t going anywhere…
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.
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!
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
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.
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.
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.
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.
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.
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.
Last night I was in Boulder most of the evening, and although it wasn’t snowing there (more like a fine cold mist), up in Longmont I guess there was about four inches of the white stuff. I came home late and almost ran over a little snowman in the middle of our street.
By “little” I mean it was less than a foot tall. Weird.
When I came inside, Zack asked me if I’d run over Tito. Apparently he’d built the little guy after shoveling the driveway. He took a little selfie with Tito.
I guess he, Kyra, and Laralee also made snow angels in the middle of the road, but I didn’t see those…
My family thinks I sneeze too loudly. Hey, people have quirks.
I was working in my office (in the basement) just now, and sneezed. I got a text from Kyra, who is upstairs, two floors away.
Okay, maybe my sneezes are loud…
It’s been a while since we visited mom and dad in Missouri, so we headed “out east” for Christmas. Here are a few photos of moments in the journey.
At one of our stops along the drive, there was a gorilla statue for reasons beyond my ken. Zack and I had a little fun with it.
Bucking gorilla, seen in many a rodeo:
In St. Charles, the weather was quite nice– temperatures were in the 60’s, which made for a decidely not-white Christmas. But it was a great opportunity to wander Old Town, peeking in some shops and watching the parade. Of course we managed to find a few nice hats:
There was another store that had a big sign by the hats which said “Do not play with the hats!” I guess they had too many kids like Zack passing through or something. Anyway, Zack found a mini-hand, which for some reason fascinates him.
As always, mom did a first-class job decorating everything. The house was beautiful.
We opened gifts, and apparently Kyra’s gifts for me, Laralee, and Zack hadn’t arrived yet, so she wrapped some nice notes for us:
I later learned that “hadn’t arrived yet” was code for “hadn’t even been ordered yet”.
Christmas dinner was amazing, and the table looked great.
Alex– err, Elder Schroeder– called just as dinner was starting, and since it was one of two times during the year we’re able to speak to him, we took the call. We had a great time talking to him for about 45 minutes.
We’d originally planned to come home Monday, but the weather was looking pretty sketchy. A deluge of rain on Saturday led to floods on Sunday, and I-70 was closed in parts later in the day. In addition, a huge winter storm was sweeping north through Kansas (right along our route) and would likely close I-70 on Monday. So we decided to leave Sunday, and the drive was fine. Whew!
All in all, it was a great time and a wonderful chance to hang out with the fam for a few days. Merry Christmas, and to quote Tiny Tim, God bless us, every one.
On Saturday night, the fam was sitting on the couch poking around on our tablets, and I stumbled across this:
Holy cow, I laughed for probably five minutes straight, to the point where my sides hurt and I was crying. I don’t know why it was so funny, and the rest of the fam was mystified as well. I still chuckle just looking at it.
The internet is so awesome.
I saw this on the internets and thought it was hilarious.
It was really her facial expression that cracked me up, probably because it reminded me of our 2014 Christmas card photo shoot, where Kyra had some hilarious facial expressions as we snapped pictures of us running for our “Jurassic Park” card.