Sunday, May 31, 2009

Renaming the wheel: a parable

In the last days of the Kingdom of Israel, before the ten northern tribes rebelled against the House of David (~930 BC), the whole assembly came before Rehoboam son of Solomon King of Israel to make a request. The key issues were around labor conditions, but recently discovered papyri document some heretofore unrecorded conversations with the cart-makers' guild.

"Your majesty," they said, "we have this innovation we call the axle; since last year we have improved efficiency with the wheel, but this combination of wheel and axle will bring glory to the kingdom and wealth to the royal treasury, and also be more environmentally friendly."

Rehoboam told them to come back in a few days. According to 1 Kings 12:5-7, he got some good advice from his father's former senior officials: "If you want them to serve and obey you, then you should do what they ask today. Tell them you will make their work easier." About the cart-makers guild, the advisors said: "That 'wheel and axle' thing looks way cool. If you offer them additional supplies from the royal machine shop, our wheeled-vehicle technology will be the envy of the region. About the terminology -- that's beneath your majesty's notice; let them call it what they want. Should not decisions be made at the lowest reasonable level in the organization?"

Tragically, Rehoboam rejected this good advice (1 Kings 12:8) and turned to some young hot-heads who told him to answer the people harshly.

Even worse, one architecture astronaut said, "Rather than 'wheel' and 'axle', your highness, I suggest that 'rod' and 'reel' would be more appropriate and bring more glory to your majesty, and they all begin with your majesty's initial. And besides, you're the king; you get to decide."

Three days later, the people returned, and Rehoboam answered them harshly (1 Kings 12:12-14). In an unrecorded further comment, Rehoboam also told the GM reps, uh, the cart-makers' guild, "You have to use the words 'rod and reel', not 'wheel and axle', or no more access to the royal machine shop."

"But your majesty!" they replied, "All our papyri use the words 'wheel' and 'axle'!"

Rehoboam was unmoved. "Forget all the innovation crap until you rework your documentation to use the new approved words, 'rod' and 'reel'. I'm king; I get to decide."

The results were unfortunate, as recorded in 1 Kings 12:15-19. The ten northern tribes separated from the tribes of Benjamin and Judah. They were never reunited. And after being beaten down, the cart-makers' guild gave up their wheeled-vehicle technology and went into the manufacture of cast idols instead. They never recovered either.

Saturday, May 30, 2009

Three perfect days in Yosemite

Though it was Memorial Day weekend, we were not trampled by the crowds. Carol and the kids picked me up in Sunnyvale about 2pm. We took the southern route (101, 152, 59, 140, 49) and stopped at Oakhurst for dinner at about six. This was not the optimal route, but it did take us through Merced (a big thrill for the teenager since her friend Nick will go there for university this fall). I took this nonoptimal route because everyone else was asleep as I drove through Los Banos. I could have awakened them, but I don't like doing that.

So... dinner was at Oka Japanese Restaurant. The food was tasty if not authentic. Service was punctual and portions were generous. It's easy to spend a lot of money here.

We stayed at the Narrow Gauge Inn outside the south (Highway 41) entrance, a charming inn with friendly staff. Three nights at $160/night per room, plus taxes -- we took two rooms (one queen-sized bed apiece).

Saturday: Illilouette Fall; dinner at Narrow Gauge Inn

Saturday morning we got a late start -- grabbed a few sandwiches at the Fish Camp General Store and headed for the south entrance to Yosemite, arriving at the end of the line around 9:30. By the time we got to the entrance station it was a little after 10:00. "I'll take your most expensive pass, please," I said to the park service agent. $80 covers fees at all national parks and monuments (any place that charges a fee), 'til the end of May 2010. Fortunately they were taking credit cards at that time (they declined them Sunday and Monday mornings). We journeyed up to Glacier Point and hiked the Panorama Trail down to Illilouette Falls, apparently a 1400-foot elevation drop in about two miles. It was quite a workout climbing back up to Glacier Point at 7220 feet. It was gorgeous, as the trail guide says. Lots of water in the falls.

Dinner at the Narrow Gauge Inn was mixed: most of the food was good, but the tossed salad looked like it had been prepped Friday afternoon and left in the refrigerator overnight. Entrees were priced in the $30 range. Our party of nine (three in the under-25 set, and six in the over-45 set) was subject to the 18% enforced gratuity. This 18% was computed on the after-tax bill, which makes me think we should avoid this party-of-nine business next time round. Portions were adequate. Service was uneven but friendly.

Chilnualna Falls, dinner at Tenaya Lodge

Sunday, the ex-teenager wanted to take a strenuous hike: Chilnualna Falls, 2300' elevation gain in a little over 4 miles. This time we got a slightly earlier start and waited less than 10 minutes to get to the gate. These guys say the hike's not worth it, but I disagree; the views are gorgeous. But I knocked the ex-teenager's Nalgene® water bottle over the falls; it was very sad. But we got back without injury -- my knees didn't even hurt, undrugged! (I forgot to eat ibuprofen, before or after.) The lovely Carol had dropped us off (our friends' daughter Melissa, our ex-teenager, and me) at the trailhead, and spent the day with our remaining teen at the Wawona Hotel.

Anyway, we got back to the trailhead, used the outhouse near there, and I led us on a wild goose chase (I thought maybe we could get to the Wawona hotel without having to hike all the way back to the highway; if you look at a map you'll see that we go around the acute angle of a trapezoid. But I led us astray and we had to retrace our steps -- taking more steps than we would have, had we just hiked to the highway). Anyway, the ex-teen and I each downed a 20-oz(?) sports-drink. Melissa wasn't interested. A little while later, I told the girls to just wait for me while I went back and fetched the car.

Dinner was at the Tenaya Lodge, where it is possible to get a burger and fries for about $11 (plus tax and 18% gratuity, enforced on parties of over 8 -- this time it was 18% of the pre-tax price). (It's possible to spend $30 on an entree too, but that's not typical.) The food was fine and service was OK.

Monday: Wawona Point, Lower Yosemite Fall, and home

We woke early Monday morning and the lovely Carol wanted to go for a walk. We drove to Mariposa Grove (no greeters at the entrance station at 6:15am) and headed for Wawona Point. This was about 3½ miles and a 1200' elevation gain. If you look at a map it looks like only 3 miles to Wawona point, but I led us on a non-optimal path. Anyway we did about 7 miles round-trip for a brief morning walk. A three-hour walk that is. We got back just in time for breakfast, though they had run out of hard-boiled eggs by then.

We packed up and headed into the valley. We waited no more than 10-15 minutes at the entrance station, even though it was after ten -- and again, no credit cards allowed today; I guess their connection died Saturday night or something. Parked the car at the day use lot, and made our way to Degnan's Deli. Grabbed some sandwiches and a salad, then walked to the lower Yosemite Falls vista. It was beautiful. Lots of water (way more than in summer). Lots of people. We sat down to eat, then the wind shifted -- it was like a cold rain! After a few minutes we got out of the "rain" and finished our meal. We caught the shuttle bus back to the village and got back into the car.

Exiting the park was easy; lots easier than in the summer. We left via the Highway 140 exit, and took 140 to 165, then 152-101 and home. We shared the driving, starting with the teen-ager.

Dinner was in Los Banos, at one of the first Mexican places we saw after turning west from 165 onto 152: Taqueria El Rodeo. Google maps has a tepid review, but we all enjoyed the food there. Prices were reasonable. Room temperature was not a problem.

I think we got home by 9pm. A great weekend!

pydoc for friendly up-to-date documentation

Suppose you have a bunch of Python scripts that lots of people will use. You make them easy to use by providing a help message. Like if they want to run my little script that "solves" the Plext® game, they type
$ ./plext1.py -h
or they just type the script name without parameters, and the script tells them they have to provide this or that parameter. Here's a screen-scrape:
$ ./plext1.py -help
./plext1.py: Play the 'plext'(tm) game.
Parameters: patterns (e.g., "ivngmarlbkstvl") or the verbose flag ("-v").
You can put more than one pattern if you like.
Note that the patterns MUST BE all lowercase.
The verbose flag applies to all subsequent patterns.
$
If you type plext1.py --help or similar, you'll get the same thing.

Now suppose you want to provide a website (a wiki, say) with the "help" messages for a bunch of these scripts. You could run each script, snarf'n'barf the help message, and put that onto your wiki. This might be OK if you just have a couple of scripts and you never (well, hardly ever) change them. But even with just a few scripts, you've got denormalized (redundant) data -- data that can easily get out of date.

That is, whenever you change one of the scripts, you have to snarf'n'barf the help message again, if you want the website to stay up to date. This is a waste of time, if not easily forgotten....

How about having a CGI that runs the script and displays the help message? This is such a bad idea that I don't even know where to begin....

But what if you had a CGI that would run pydoc(1) on the script? It might be able to print something like this:
$ pydoc /home/collin/plext1.py 
Help on module plext1:

NAME
plext1

FILE
/home/collin/plext1.py

DESCRIPTION
Play the 'plext'(tm) game.
Parameters: patterns (e.g., "ivngmarlbkstvl") or the verbose flag ("-v").
You can put more than one pattern if you like.
Note that the patterns MUST BE all lowercase.
The verbose flag applies to all subsequent patterns.

FUNCTIONS
find_longest_match(an_arg, legal_words)

main(args)
The parameter is a list; we expect sys.argv[1:] --
i.e. just the words, not the script name.

printwords(a_list)

show_answer(an_arg, legal_words)
an_arg is a long string like "ivngmarlbkstvl" (MUST BE all lowercase);
legal_words is a list of words from the dictionary.

usage()

DATA
verbose = False
words = '/usr/share/dict/words'
Even better, the CGI could run pydoc -w and then spit the result onto your page, something like what you see at plext1.html. Now how cool is that?


Anyway, if you want to see the source of the program, here it is. Note that the entire content is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.
#!/usr/bin/python -tt
# vim:sw=4:et
"""Play the 'plext'(tm) game.
Parameters: patterns (e.g., "ivngmarlbkstvl") or the verbose flag ("-v").
You can put more than one pattern if you like.
Note that the patterns MUST BE all lowercase.
The verbose flag applies to all subsequent patterns."""

import re
import sys

words = "/usr/share/dict/words"
verbose = False


def main(args):
"""The parameter is a list; we expect sys.argv[1:] --
i.e. just the words, not the script name."""
global verbose
legal_words = []
all_lower = re.compile('[a-z]*$')
w = open(words, 'r')
for a_word in w:
if all_lower.match(a_word):
legal_words.append(a_word.rstrip())
w.close()

got_a_word = False
for an_arg in args:
if an_arg == "-v":
verbose = True
continue
# Not a flag; it's a plext puzzle
if all_lower.match(an_arg):
show_answer(an_arg.lower(), legal_words)
got_a_word = True
else:
usage()

if not got_a_word:
print "Didn't get any words."
usage()

sys.exit(0)

def usage():
print sys.argv[0] + ":", __doc__
sys.exit(1)

def show_answer(an_arg, legal_words):
"""an_arg is a long string like "ivngmarlbkstvl" (MUST BE all lowercase);
legal_words is a list of words from the dictionary."""
num_words = 0 # none so far
while len(an_arg) > 0:
(match_len, some_words) = find_longest_match(an_arg, legal_words)
num_words = num_words + 1
print `num_words` + ": matched '" + an_arg[:match_len] + "':",
printwords(some_words)
an_arg = an_arg[match_len:]
print "my best answer is:", num_words, "words"

def find_longest_match(an_arg, legal_words):
len_matched = 0
pat = ""
the_list = legal_words
# loop entry:
# the_list -> words matching len_matched bytes of an_arg
# pat -> pattern showing len_matched bytes
while len(the_list) and len_matched < len(an_arg):
if verbose:
print "trying to match:", an_arg[:len_matched+1]
old_list = the_list
pat = pat + '.*' + an_arg[len_matched]
pat_re = re.compile(pat)
the_list = filter(lambda aword: pat_re.match(aword), old_list)
len_matched = len_matched + 1
# At this point: Either we matched all of an_arg, or...
if len(the_list):
# Matched the whole thing
if verbose:
print "matched all of '" + an_arg + "': e.g.",
printwords(the_list)
return (len_matched, the_list)
else:
# Here, the_list is empty. So we matched len_matched-1 bytes.
if verbose:
print "matched", len_matched-1, "bytes of",
print "'" + an_arg + "': e.g.",
printwords(old_list)
return (len_matched-1, old_list)

def printwords(a_list):
if len(a_list) == 1:
print a_list[0]
return
# else
print a_list[0], "or", a_list[len(a_list)-1]

if __name__ == '__main__':
main(sys.argv[1:])
Did that sound too much like a commercial? Too bad :)

High school prank...

Yesterday morning, we woke up to find our teen-ager on her cellphone, seated at the dining-room table. Her friends were apparently called by the Menlo Atherton High School office: no school was for the first two periods of the day.

She immediately suspected a prank, but I wasn't sure -- even though the message didn't make much sense:
This is an important message regarding a serious electrical failure at Menlo-Atherton High School. Due to the potential hazards this morning's events may induce, school has been temporarily postponed until third period.
(We got our call maybe 15 minutes later.) It sounded realistic, but electrical failure?

She called the office, and they didn't answer the phone. I nevertheless advised her to go there and see; if school really were closed, it wouldn't be so bad to bike back home, or to cruise over to Borrone's for a hot chocolate or something.

I called her at the end of the day. "Was there school today for the first two periods?"

"Yes; it was a prank," she told me. It was entertaining to read the story in the Mercury News this morning.

Only in America...

Addendum

If you look closely at the link above, you'll note that the author is with the Daily News Group -- i.e., the Redwood City Daily News and its siblings. The San Mateo Daily Journal has this story.

Wednesday, May 20, 2009

Exploratorium!

Today was field trip day for Jeff DeCurtins's AS Physics class at M-A, and I was elected (or drafted) as chaperone (yeah right). On the way up, I handed Bobby (my navigator, a Cornell-bound senior) a map of San Francisco. "So after we get lost, we can find our way back," he quipped.
I told him what Mike-Mike said to Cora back in the summer of '88: "Carry a flashlight; that way you can see the bear when he attacks." Mike's wife Elanor told him not to scare the novice, but the damage was already done; it took Carol and me a while to calm poor Cora down.
We actually didn't get lost -- we were one of four parent-driven cars, besides the bus. We arrived at San Francisco's fabulous Exploratorium after about an hour. Pretty soon the bus arrived; we gathered up and were introduced to the museum.

I took a quick pass through the exhibits, then filled my coffee cup and went for a stroll in the immediately adjacent park -- with the Palace of Fine Arts in the background. It was a gorgeous day, and I headed for a bench to relax on while reading my CACM.

On the path, a Chinese couple were taking photos of each other. I asked them if they wanted a picture of both of them, and they indicated they did. The wife pointed to the viewfinder (the LCD screen wasn't lit), telling me in Chinese: "你看這個地方" -- at least that's what it sounded like to me (but maybe she began with "您", and maybe it was "那個地方", i.e,. "that place" rather than "this place"). I was tempted to reply, "這個地方嗎?", but then they'd probably think I really spoke Chinese. The husband came over and said, "Just press here" in English.

I read through most of my magazine and headed back in. On the way somebody asked me (in English) to take a photo of two of them; it was much easier communicating with them, as they clearly spoke English.

Back in the museum, I enjoyed the optical illusions. Soon it was time to go; we gathered up and I drove out of the parking lot and headed toward the Golden Gate bridge. For a minute or so I wasn't sure if we were on a path-of-no-return to Marin County. I told the kids, "There wasn't a TOLL CROSSING ENTRANCE sign, so I hope..."

Then I saw the sign with the most welcome words "LAST S.F. EXIT" -- and Route 1 south (to 19th Avenue). Whew! The drive back (a little shorter) was uneventful. The kids slept at least a little.

Sunday, May 17, 2009

A flight from God... and from each other?

Thomas Merton is currently my favourite modern prophet. Prescient?
The whole mechanism of modern life is geared for a flight from God and from the spirit into the wilderness of neurosis.
Thomas Merton, No Man Is an Island, p. 109
That was written over a half-century ago, before 80+ channels of cable TV, before email, before cheap cellphones and pagers, before Facebook and Twitter. Flight from God indeed! There's a flight from ourselves and from each other too.

If you're unsure about my extrapolated conclusion, consider how many times in the past week you sent an email -- whereas a few years ago you would have picked up the phone and heard the sound of their voice in your ears? And a few years ago, you might have heard some hesitation, or a catch in your friend's voice, and asked what was happening, and maybe your friend would describe some major or minor catastrophe.

Maybe you couldn't "do anything" to help, concretely, but you would have connected in a way you didn't with last week's email.

And why email? Well, why not? You (or I) can be a lot more productive with email. You could probably contact a half-dozen different “communities” during the time it took for that hypothetical conversation, and experienced a lot less drama doing it.

This rationale has two gaping holes in it, of course -- first, as not-so-subtly hinted at by the quoted “blue type,” these communities may be diluted by the lack of face-to-face communication. If the words we exchange are mediated by keyboard and screen, our communication is thin indeed. And if our chosen medium makes it easy to avoid drama, well, it also makes it easy to avoid heart-to-heart contact. Sometimes another's catastrophe elicits feelings within ourselves -- feelings that aren't always comfortable; as Judd Hirsch tells Timothy Hutton in Ordinary People, "it doesn't always tickle." And so it's easier to send the email or text than to call on the phone.

Or avoid communication altogether and play a video game or watch a DVD. As DeGrandpre wrote,
[W]e are in flight from reality ... to escape the unpleasantness of our immediate inner and outer lives, which ranges from boredom and restlessness to anxiety and despair.
Digitopia: The Look of the New Digital You
by Richard DeGrandpre, p. 74
Immediate life is painful, so we go for experiences mediated by keyboard (or joystick) and screen; we flee ourselves, each other, and God.

The other problem with my somewhat tongue-in-cheek rationale is simply this: even if the "communities" we're contacting aren't dilute, why is it better to contact more of them in a shorter time?

Why is it always preferable to use an easier method and "accomplish more" than to follow a time-consuming process and "accomplish less"? That is the (largely) unquestioned modern assumption: that more is better. This is probably closer to what Merton originally had in mind.

The thing about this modern perspective is that it is far from false. Modern methods led to the development of dwarf wheat, by which over a billion human lives were saved. This is undeniably pleasing to our Creator. With modern mass-produced vaccines, we have eradicated smallpox.

But technology enabled Ponzi schemes, pump-and-dump fraud, the abuse of credit default swaps, and other specifically modern felonies. In addition, we have a new set of uniquely modern psychological disorders, though I don't know of the APA has identified them as such.

I recently heard about a person who is exhausted by being with a small group of people, terrified of unmediated interpersonal interactions. Over the phone or on email, though -- no problem! My heart goes out to this person, who could never have developed this affliction back when all interactions were immediate.

So what?

I'm not advocating, in this electronic medium, that we burn our cellphones and unplug our internet connections. But I do hope that you and I remember to use the phone sometimes, instead of email or text messages. And that we sometimes get on the road and meet face to face, instead of "meeting" electronically.

Saturday, May 16, 2009

Do CEOs matter? Alas, sometimes they do.

"It took two CEOs nine years to wreck what 85 years of patient accumulation had built."

So ends the penultimate paragraph of Harris Collingwood's piece in the June 2009 Atlantic. He quotes Stanford’s Jeffrey Pfeffer: “Good leaders can make a small positive difference; bad leaders can make a huge negative difference.” (from a 2006 article in Fortune)

Another gem from that Fortune article: Who can fix GM? Maybe nobody could in 2006, but there were lots of folks who could accelerate GM's collapse. (Heck, I could have driven it into the ground for a lot less than whatever they paid the last CEO.)

Do senior pastors matter?

I mentioned "huge negative difference" to the lovely Carol, and she wondered out loud if that applied to senior pastors. Certainly an awful pastor can scatter a congregation, but can an excellent one make a big upside difference? I guess it depends whether the congregation is like GM in 2006 vs. Apple in the early 1980s, to take a couple of extreme cases.

I don't have anything else on this topic, but I thought the comparison between CEOs and senior pastors was a good one -- and are the elders like the board of directors? Then I hope the Holy Spirit is the chairman of the board.

Thursday, May 14, 2009

Bike to Work day, May 14

Yeah, that was today. I rode in after a phone conference. It took about 80 minutes eastbound, and about ... yeah, about 80 minutes westbound. I guess I'm getting slow in my old age. Also I had headwinds. Some random thoughts:
  • Why are there headwinds both ways?

  • The sound of cheering and applause... from volunteers at a table on Middlefield near Ellis! They had some giveaways I think. At the Nasa/Bayshore light rail stop, I spied my friend Kerry, part of the sponsoring organization. She was packing up their stuff (it was after 9:30); I grabbed a banana segment and got back on the road.

  • Food! There was free food at the office: registered cyclists received a bag containing
    1. a sports drink (something like Gatorade® but generic?);
    2. a Clif® bar -- mine was "carrot cake";
    3. an apple; and
    4. a bottle of water (crystal geyser® i think)
    I consumed the first three before lunch, then went across the street to Subway® for their foot-long tuna sandwich, which I inhaled in short order.

  • In the morning I took Middlefield Road all the way to Ellis, going over Highway 85 (a mild incline is involved). A friend told me that he avoids that overpass, so I skipped it on the return trip, passing under 85 on Moffett. It was a little easier, but either way Google Maps® reports 14.4 miles.

  • On the way home, I caught up to two other cyclists. Both of them wore unisex cycling tights (I was wearing loose athletic shorts of a kind the lovely Carol detests). One of them looked back, then pulled ahead -- a competitive fellow, or maybe he just decided he'd had enough of a break. I continued behind the other one, who I realized after a while was a woman. Though I enjoyed the slightly slower pace, I didn't want this lady to think I was looking at her backside (which I was). So I went around her when the traffic permitted. I passed the competitive(?) fellow when he detoured into a supermarket.

  • I guess I was in a hurry (I certainly was on the way home) because I realized I hadn't stopped for water the whole way.

  • My bike don't get no respect. One of my colleagues (he of the multi-thousand$ road bike) came over the next day to taunt me about locking up my 35-year-old machine (I bought it when I was a college freshman in 1974). Why would anyone bother locking that thing up, he wondered. "That bicycle carried me to the beach and back many times, and to Big Basin!" I retorted.

    "Well, you don't weigh very much," he said. Hurmpf.

Monday, May 11, 2009

Jury duty!

This week was the third time I was called as a juror in San Mateo County. The first two times, they told me to just forget it, but this time I spent the morning waiting around in the jury room.

Around 11:40, we were told to take an early lunch and be back by 1pm.

A few minutes after 1:00, we were told to go to a certain courtroom and await instructions. The presiding judge arrived.

He started us off with some good news: this morning's waiting around was going to count as our jury service for this year. Whew! He explained a change in the court system made about a decade ago, and he also explained what happened in the case we were called in for.

Sometimes, he said, having a bunch of prospective jurors waiting around downstairs is what it takes to get these guys to settle a case. They know what they'd like to say and do at trial, but when the 75-80 people are milling around downstairs... it's only then that they say, "Gee, do I really want a jury to hear all this about my client?"

I had this scenario in my mind's eye: The lawyers are posturing back and forth. The judge is trying to get them to settle. The defendant is clearly guilty, and this reality is finally hitting the defense attorney. It's getting close to lunch time, and the judge says, "Counselor, there are about 75 rather impatient jurors downstairs, ready to roast your client's anatomy. I suggest you settle."

Of course that isn't what actually happens, but it was amusing to imagine it.

my opinion on the 5/19 propositions

  • 1A, 1B: Yes; these require more prudence in the state budgeting process. Although I wasn't sure about 1B (is it wise to give the legislature and governor more discretion on how education funding gets distributed?), the fact that nobody submitted an argument against 1B, plus 1B's other good points, convinces me that YES is the way to go on 1B.
  • 1C: Borrow from future lottery profits? This is one of the stupider propositions I've seen. No!
  • 1D, 1E: Raid various other programs to deal with general fund issues? Hey, there was a reason we passed those things in the first place.
  • 1F: freeze legislators' pay in budget deficit years? I can't say I'm all that excited about this one, but generally speaking it seems like a good idea.
That's what I think, anyway -- and these opinions + $1.40 will get you a short regular coffee somewhere....

and one on Redwood City measure "E"

This assesses each parcel $91/year for a decade or so. That's about $8/month per -lot-. So if you live in an apartment building with, say, 8 units? The owner pays $8/month more for the building; it'll cost you $1/month if the owner even bothers to calculate that in.

Yes, someone in a 700K$ home pays the same as someone in a 7M$ home per year, but that doesn't bother me much. The RCSD, which has the lowest per-pupil funding in all of San Mateo county, deserves a break -- rather, the kids deserve it. What, you don't have any kids? These kids are gonna be adults here in a few years, whether they're yours or not.

Sunday, May 10, 2009

A perfect day

The makers of "Trivial Pursuit" have a question under "Science": What is the second Sunday in May? Now why the definition of Mothers’ Day falls under "Science" I'm sure I don't know, but this weekend at my house, we are celebrating and honoring the mother of my children.

We started Saturday with a hike in Henry Coe State Park, led by the fabulous Libby Vincent. No, she is not the Presbyterian pastor from Menlo Park. If you see her name on the "Programs" page, that's a reason to choose that particular day for your visit. Don't believe what google maps say about the park; it is really 13 miles from US 101 to the park headquarters, about half an hour's drive -- half an hour from the E. Dunne exit off 101 I mean.

We arrived about 9:45am for the 10am start, carrying about 2 quarts of water between us. Libby strongly encouraged us to get another liter to bring -- better to have a little extra than not enough.

We could not have asked for better guides than Libby and John. John Wilkinson worked around the valley in high tech, and shares some of my opinions about public transit. Both are knowledgeable about the park and have been involved with it a long time.

Thanks to some late-season rain and a cool spell (after last month's heat wave), the wildflowers were glorious -- better than usual early May conditions. The weather was just about perfect, too -- about 75°F I think at the warmest. We got a few flower photos, but our camera's autofocus was confused and many are blurry. If you don't have manual control over the focus, the Owl's Clover isn't even worth trying.

We took about 5½ hours for the 7-mile hike. (I know, the programs page says six miles -- but we took the loop going by Eric's Bench. This is a worthwhile side trip, giving you a great view of a valley oak, like this splendid specimen at left. But I'm getting ahead of myself.)

The short version is: we crossed Pine Ridge to Frog Lake, then went down Middle Ridge to the Fish trail, then back to headquarters via the Corral Trail. Clockwise, in other words, on the trail marked by magenta dots on the map above.

Now for the details. From the headquarters, we went north on the Monument trail, quite steep. We turned left onto the Ponderosa trail, where we saw Eric's bench and that gorgeous oak tree. If you don't click on the map, this was about 3000' elevation.

After doing that loop, we continued north to Hobbs Road, proceeding roughly north -- this thing was apparently built "by a bloke on a bulldozer" as Libby said; he just drove straight down the hill. This was a steep descent to Frog Lake, a 600' drop. There we saw a woodpecker, a beautiful bird, drilling an apparently-dead tree. He looked great through the binoculars but I couldn't capture his image with the camera.

We took the Frog Lake trail up to the Middle Ridge trail. Switchbacks make it a much easier climb than the Monument Trail was. Though it was near noon, we pressed on to the Fish Trail turnoff. We had our lunch there and took the Fish trail toward Hobbs Road. Somewhere along there I heard a tremendous racket; I turned and saw a deer on our right, bounding through the brush parallel to the trail; it was heading back where we had come from. It paused briefly, then made a left turn and charged up a hill and out of sight. You guessed it, no photos. The last 0.6 mile felt quite long.

We were back at headquarters around 3:20pm. I took my boots off and had a little drink. We visited the restroom (running water and flush toilets at headquarters! Yay!), then Carol drove us down the hill and back to Redwood City.

We parked the car, and I bought our tickets: 6pm showing, which gave us time for a quick dinner at the Chipotle Grill on Theatre Way. I inhaled a burrito, and probably too many chips. The burrito was great; the chips... well, let's just say we pitched the leftovers. Great burrito though, and very quick. The lovely Carol had a salad, which was also great (I had a bite).

The film, Star Trek (2009), was fabulous. It deviates in many places from the history of starfleet as we know it, but that's OK. It's got great FX, a reasonable (well, not utterly stooopid) plot, and some terrific lines. "Careful with the ship, Spock; she's brand new."

We got home about 8:30 and chatted with our teen-ager. I helped her with some computer stuff. We took showers and got to bed early. A perfect end to a perfect Saturday.

Today, Mother's Day (Mothers' Day?), we started off with homemade blueberry waffles; the teenager set the table and created a fruit plate. Dinner was Swiss steak (a childhood favorite of the lovely Carol); I also sauteed carrots and zucchini in olive oil with some Italian seasoning. The teenager whipped up the potatoes, and made up some Jell-O for dessert.

And now it's time to work on the dishes.

Thursday, May 07, 2009

Papa Haydn's Surprise

Carol's nephew and his wife are parents of a baby boy named Hayden -- spelt like, but not pronounced like, Haydn (as in Joseph). We chatted with them at last weekend's wedding, and indeed he's the one I'm holding in this photo -- which you can also see here. His name brought to mind a record album we heard many times: Papa Haydn's Surprise, which you can download from amazon.com for about $10.

This was some years ago, and our copy was on cassette tape. It was a delightful story. The reader, Ann Rachlin, is masterful.

If your kids are at all interested in music, you should consider putting this on your MP3 player (iPod® or similar), or burning it onto a CD... and playing it over and over again for them. Click here and listen to a few 30-second clips and see what I mean!

Monday, May 04, 2009

Fear or Faith

I was sure I'd written about this before, but now I can't find it; I suppose that means I just thought I did. Well, here goes.

Some decisions are easy to make -- at least it's easy to tell what's right vs wrong. Suppose your spouse is out of town, and some attractive stranger proposes to have sex with you. Or you find a cash-filled shopping bag lying on the ground. Or you're doing your taxes, and you won a few thousand bucks playing the slots last year.

It's obvious that you decline sex with the stranger, you turn in the cash, you report your winnings on your tax returns.

Other decisions are not quite so clear-cut.

  1. They want me to take a really exciting and meaningful job in another state, but my husband worries about the effect on the kids.
  2. My girlfriend just dumped me; should I try to start something with that woman who started coming to our church?
  3. My boyfriend didn't  dump me, but I don't think we're meant for each other.
In these cases, one could imagine responding from fear, or from faith. Here's what I mean.
  1. really exciting... job in another state
    We could decide to go
    • based on faith that God will help us take care of the kids, and that he will use the work I do at my job to bless the world; --or--
    • based on fear that if I pass this up, I'll never have another chance!
    Alternately, we could decide to stay
    • based on faith that God will provide future opportunities, --or--
    • based on fear about the kids.
  2. just [got] dumped... start something with that woman who started coming to our church
    I could decide to ask her out
    • based on faith that God has a plan for me, the plan likely includes marriage, and if I just put one foot in front of another, we'll find each other; --or--
    • based on fear that if I've got to get a move on right now or I'll end up miserable, old, and single.
    Or, I could decide to wait
    • based on faith that when the right person comes around, it'll be more evident to me; --or--
    • based on fear that this one will end in disaster too.
  3. boyfriend ... aren't meant for each other
    (You've got the idea.)
The point is: I could take any of these permissible actions based on faith, or based on fear. Whether we head in this direction or that one, it's better to head that way based on faith, rather than on fear. 2 Thessalonians 1:11 asks God to bless "every act prompted by your faith." (Another translation is more dramatic.) More than that, Romans 14:23 tells us that whatever isn't from faith is sin. And the author of Hebrews talks about how important it is to combine information with faith. As I've said elsewhere, our actions reflect whether our faith has legs.

In the past, I've read those passages as addressing the question "You believe; so what?" As I re-read them now, though, it seems they also ask: "What influences/directs your decisions?"

And I wonder if this is related to what Gordon Smith says about making a decision from a place of desolation (despair, fear) vs. consolation (confidence, faith)? -- as I wrote about earlier. Maybe it does; this interview in Christianity Today connects consolation with faith and courage.

May wisdom and faith guide all our decisions. May the Lord "fill your good ideas and acts of faith with his own energy so that it all amounts to something." (2 Thessalonians 1:11-12 MSG). Amen!

Mental health day

with the lovely Carol
with Hayden
You can call it a sabbath if you like, but really, I'm just taking the day off. Saturday morning we drove to South Lake Tahoe for a wedding ceremony -- Carol's nephew tied the knot, just over the state line. The reception was at the Riva Grill at the bottom of Ski Run Blvd (in California; photos here and here) -- gorgeous view, great food. The pictures at right were taken there. We were out of the house from about 8:00am to about 9:20pm. So that made me feel like taking the day off today.
People have asked me: "Who is that little boy?" Short answer is: his grandfather is Carol's brother.
So what am I up to? In chronological order, mostly:
  • made pancakes
  • did a bunch of Python scripting for a friend, who I'll call "Oskar." He'll be working overseas as a missionary and wanted to set the machinery up before leaving. Machinery? Well, Oskar wants to send email newsletters with mail-merge. That is, when sending it to a few dozen people, each person will get a single email with their first name embedded in the text. Piece of cake, right? "That's what procmail(1) is for, right?" Well, yeah. Except...
    • Oskar's email client tends to encode text parts in base64;
    • He's sending me a mailing-list for each message (different messages can have distribution lists), where the mailing-list is one of the parts of a multipart message;
    • HTML with images, or attachments, may be involved.
    So I learned about Python's email package. It is really cool. Here's what I'm gonna do for Oskar's email. The address-list will be in a single text/plain part at the top level. When I find it, I'll remove it (Just like that!) from the message's data structure. If there are multiple toplevel parts left, I'll attach 'em to a new message -- otherwise I'll grab the remaining toplevel part and use that one for the message. These are "object" things and they like inherit properties of the message class; in effect, they are messages in their own right -- all I have to do is add the 'To:' and 'Subject:' headers, and I can send 'em.
  • Considering that I spent my free morning programming, I decided to send you a link to Weird Al's White 'n' Nerdy video (if you've already seen it, you might enjoy "Take#1", quite athletic, or "Behind the Scenes"). Naturally I wasted spent some time tracking those down.
  • We have a cable that's been hanging down in front of the kitchen window for literally months now; I finally dragged a ladder out and put something up into the rafter-tails (etc.) so the cable would be out of the way.
  • grabbed the photos off the lovely Carol's laptop, and tried to make them appear on the right. http://www.htmlhelp.com/ says my HTML is right, but maybe blogger is overriding that somehow.
I was planning to flesh out an essay on decision-making: based on fear vs on faith, but taking a nap might have a higher priority....