Apr 5 2010

Three State Parks in one day

That’s right: yesterday afternoon we went up into the North and managed to hit three different State Parks in one day. Pia, Oakley and I started off towards Las Vegas (NM) and then headed north on 518 until we hit Storrie Lake (Park I: map, description). The lake is out in the plains and if it is windy, it’s very windy there. That was the case yesterday and we only stopped for five minutes, because the wind was just too strong. Of course in those five minutes we manage to run into a Ranger Patrol, who reminded us very directly that we have five minutes before we have to purchase a ticket or get a ticket.

We continued on 518, turned onto 94 and made a left in Ledoux (what, are we in France already?) towards Morphy Lake (Park II: map, description). The lake is set lovely into the mountains and while it is only at 8000 feet elevation, it sure felt like it was a lot higher. We hiked around the lake for about an hour and met many people who tried their luck fishing for some trout in the waters. There were plenty of climbing opportunities for Pia and more than once did I have to look away when she was attempting to get to the peak of another 40 feet boulder:

That hour in the sun made all our tummies grumble and we needed to find some food quickly. Mora, where we started to look for food, was dead as a door nail. Every single food joint was closed, which wasn’t that big of a surprise given that it was Easter Sunday in the catholic back country. Oakley spotted an ice cream parlor, which also seemed to have “normal” food. I forgot the name of the place, but you can see it in this street view photo (I believe it was not yet an ice cream place when the photo was taken).
The couple running the place were the nicest people ever, something you really only find out in the country. We filled up on food, drinks and threw in a monster ice cream (black cherry).

We headed further north on 434 until we hit Coyote Creek (Park III: map, description). That one looks like a nice place to come back to for a camping trip.

Two hours later (including one where it was very quiet in the back seat, because Pia napped) we were back in Rowe.


Apr 4 2010

Happy Easter

On Friday Pia started early in the morning with Easter preparations. At 8am the first eggs were already colored.

We did some more projects during the day and for the evening we had a boneless leg of lamb for dinner. Face paint (it was actually not supposed to get on the skin) can’t miss from any special event:

Before dinner we also got visited by the real Easter Bunny:

On Saturday we met some of Pia’s friends at the Mountain Center in Tesuque for an Easter Egg hunt. Where are the eggs?

Guess who brought the biggest basket for all the goodies?

While it was cold and windy in the morning, I warmed up very nicely in the afternoon. The stream at the Mountain Center was the main attraction and I got asked more than once if it was warm enough to put the footsies into the water – it wasn’t wam enough.


Mar 29 2010

A relaxing walk with the dogs

If you get offered to take a relaxing dog-walk, high up on the Rowe Mesa and the roads are muddy, I suggest you politely decline and hike elsewhere. Otherwise you may end up as I did …

The car got stuck in deep mud and it took quite a while to get it out again.

PS: Thanks, Oakley, that was fun :-)


Mar 24 2010

I like the look of this

i7 running at 3.2 GHz with 12 GB RAM. Now I got to learn how to think faster …


Mar 22 2010

Superman, Spiderman, Hulk and Flash

http://www.foxtrot.com/2010/03/03212010/ :-)


Mar 21 2010

Almost Spring Zen

Couldn’t pass on those Hospice Daffodils at Sunflower Farmers Market yesterday …


Mar 20 2010

A Yammy treat

That mandoline in the pantry was getting awfully dusty and I pledged to make use of it more often. First victims were a pair of yams that I bought the other day.

This morning we washed them, trimmed them and sent them through the slicer to make a nice stack of them. After coating them with olive oil, fresh ground pepper and sea salt, they went into the convection oven for 30 mins at 350 degrees.

The result turned out pretty well: sweet yam chips. Not as crunchy as we had hoped for, but still good enough for a snack.

Oh, and here’s a little trick to coat them with as little oil as possible and also cover them evenly with salt/pepper. Take a gallon sized ziplock bag. Put in the slices for one whole yam. Add a little bit of olive oil, ground pepper and salt. Now take a straw and put it all the way on one side of the opening of the ziplock bag. Close the bag until only the straw provides a small opening. Blow into the straw and blow up the bag as much as possible. Quickly remove the straw and make sure that most of the air sealed in the bag. Shake, shake more and shake even more (kids are very good at this part of the preparation process). You end up with evenly coated slices with very little oil. Repeat for the 2nd batch – voila!


Mar 19 2010

More left or more right?

The other day I was sitting in the car and as I was about to make a right turn, I began to wonder: consider a year worth of driving. Bike, motorcycle and car. At the end of the year, do you think you made more right turns or more left turns? If you pick one or the other, why? And: do you think the result would be different in countries where people drive on the left side of the road?

I’m torn.


Mar 13 2010

Isn’t the ZIP code enough?

ZIP codes are unique, yet every single mail item I receive has the state (NM) added. Is that a superfluous relic of the past? In fact, name + street address + zip code should be sufficient – don’t even need to mention the city. Just imagine how much ink would be saved if we adopted that …


Mar 13 2010

How do you find a needle in a haystack?

Actually, the title should read “How do you find a needle in a haystack, not knowing that you are looking for a needle?”.

I just came across this at work and found a simple/quick solution that I thought I share. I had a few gigabytes of log file data in front of me and needed to find “weird stuff” in there. “Weird stuff” being messages that only appeared a handful of times in the millions of log lines. I did not know where the stuff was coming from and I did not know what kind of data was in there.

After some inspection of the first few hundred lines of the log files, I realized that I was looking at the same templates of messages, except that the data injected into the templates changed (those are three log lines I wrapped manually and I also changed the details to look more generic):

Mar  8 04:09:46 hostname class: TAG 08-03-2010 04:09:47.020  988-8720 INFO 
(com.company.class:aMethod:1084) - Error logging in email@address.com:12345678:
95be7ab76bb6ee838dd4a55085f15b99. error: Unable to signIn: InvalidLogin
Mar  8 04:09:47 hostname2 class: TAG 08-03-2010 04:09:47.166  74-13915 INFO 
(com.company.class2:bMethod:143) - PERFORMANCE: 1203 ms
Mar  8 04:09:47 hostname3 class: TAG 08-03-2010 04:09:47.182  22-78422 INFO 
(com.company.class3:cMethod:714) - Successfully connected to 
tcp://some.host.com:123456

Typical syslog lines, merged from multiple hosts into a single file. The timestamp is easy to detect (Mar 8 04:09:46) as well as the host that sent the message (hostname, hostname2, hostname3) and the syslog class. What followed (TAG, another timestamp, thread information and source location) was also not of special interest. The actual message seemed to start right after the “-” in each line. And that’s the part I was interested in. Using ’sed’ on the log file, just extracted that portion:

$ sed 's/^.* \- //' file.log
Error logging in email@address.com:12345678:95be7ab76bb6ee838dd4a55085f15b99. error: 
Unable to signIn: InvalidLogin
PERFORMANCE: 1203 ms
Successfully connected to tcp://some.host.com:123456
$

The trick was then to remove all variable items from the log-lines and return to the template that was used in the source. So for the first line, something like this was used in the source:

fprintf(logfh, "Error logging in %s:%d:%s. error: %s", 
   emailAddress, someNumber, hexNumber, errorDetail);

I used perl and a number of regular expressions to find most of the variable data and removed it from each line. This meant that the first line was reduced to:

Error logging in ::. error: Unable to signIn: InvalidLogin

I computed an MD5 hash for the remainder and stored the hash along with location information in an associative array. The next time the same pattern was detected, I would increase the number of times that particular pattern was in the log-files and if that number was below a certain threshold, I would also record the location. The (reduced) perl function to do that, looked like this:

sub findUnusualLines {
	my($host, $lineno, $msg) = @_;
	my $orgMsg = $msg;
 
	# trim line to remove "data" - reduce to template
	# remove path names
	$msg =~ s/[A-Z]:[\\\S\.]+//g;
	# remove numbers
	$msg =~ s/(\W)\d+/$1/g;
	# remove hex numbers
	$msg =~ s/(\W)[0-9a-f]{4,}/$1/gi;
 
	# empty?
	return if ($msg =~ /^\s*$/);
 
	# compute digest for message
	my $md5=md5($msg);
 
	# first time?
	if(++$seenLines{$md5}->[0] == 1) {
		$seenLines{$md5}->[1]=$orgMsg;
	} elsif($seenLines{$md5}->[0] < MAX_MENTIONS) {
		push(@{$seenLines{$md5}},$host,$lineno);
	}
}

Once all log lines were processed, I walked over %seenLines, found all the ones where the first element of the array reference was less than MAX_MENTIONS and printed those along with the location where they appeared:

foreach my $l (keys %seenLines) {
	my $n=shift(@{$seenLines{$l}});
	next if ($n >= MAX_MENTIONS);
	my $txt=shift(@{$seenLines{$l}});
	print "$txt appears $n times at: ",
	while(scalar(@{$seenLines{$l}})) {
		my $host=shift(@{$seenLines{$l}});
                my $line=shift(@{$seenLines{$l}});
                print "$host:$line ";
        }
        print "\n";
}

Using this I was able to find a set of messages that only appeared a handful of times in the log files (some of those were critical errors we needed to look at). And on top of that, it was blazingly fast as well.


Mar 9 2010

Oh, this looks like fun …

… Disney, please don’t screw this one up, otherwise you are going to erase one my cherished childhood memories (image link below brings you to a trailer).


Mar 4 2010

I guess it’s time to stop

My main router (Netgear’s FVS338) has a feature that allows for the reservation of IP addresses, which means that even if a device is configured to use DHCP, it will get the same ip address every time it asks for a “dynamic” address. I use that feature to group similar devices and make sure that I know at which address they will reside. Earlier today I ran into a situation where 2 devices claimed the same IP address (because of operator error) and one of them did not work correctly. Things are fixed now, but I do need to stop adding more stuff: almost 20 devices seems to be a bit over the top for a single person household (and there are some missing from that list) …


Mar 4 2010

I’m raising a media monster

This is a 6-y/o checking her email on her iPod Touch in the bedroom …


Mar 4 2010

Bread, real BREAD!

Whenever I see Christina, she hands me a bag with some baked goods. This is good and bad at the same time. Good, because I can feel like I’m back in Europe for a little while. And bad, because I have a tendency to devour everything she gave me within a very short amount of time. If you want to feel like I do, go give Christina a call

PS: That loaf on the left was half gone minutes after I took the photo …


Mar 4 2010

Micro Smile

Pia went to a 9-week skiing class and enjoyed it a lot. A few weeks ago when I picked her up from class, I took my camera with me and snapped a few shots. She did not know that I brought the camera and she did not know where I was when I waited for her class to end. On the last run I caught her coming down the mountain. From the distance I snapped this before she realized who was taking photos of her:

Then she discovers who’s taking photos of her and I get the tiniest micro smile (that only a parent can detect), because she does not want to show her excitement in front of the other kids. So cute: