Saturday, October 13, 2018

Letter to Dad: the door and some news

Dear Dad,

Do you remember a few years back, you had me work on the closer for your bedroom door? No, it still works fine, but yesterday the girls (well, they're close to 60 now) noticed that the door wasn't closing all that well. I don't think it's the closer; the door needed some planing I thought.

I had a heck of a time getting into the cabinet where you keep it; had to step over a bunch of stuff; several sheets of plywood make it hard to fully open the doors. Anyway, I fished out the plane and cranked the adjuster clockwise a little. Man, did it bite into the door! I tried to back it off, and pretty soon I couldn't turn it at all.

Guess it's been too long, because I'd forgotten about the left-handed threads. Ended up jamming the adjuster so I couldn't turn it, and then used the hammer-and-screwdriver trick you showed me. Unfortunately, that only made it worse because I turned it the wrong way!

I opened the other cabinet and found an almost-empty can of oil, and got some on the threads. That's when I discovered they're left-handed. But turning the adjuster the other way (which would back it off the jammed position) would force the blade further out. Not the way I wanted it to go!

First I got the adjuster to a place where I could turn it. Then I noticed that the blade didn't move freely with the adjuster. So I took it apart further and found two screws that held the blade-holder to the body of the plane. Apparently the plane had suffered some trauma that forced the blade in an always-out position.

With the blade-holder in a better position and with some oil on the blade assembly (sorry, the oilcan is even closer to empty now), the blade moves well and tracks the adjuster.

I planed the door a little, remembering with some fondness the operations done on it a few years ago. It's better now, but it still needs a yank or a thump to get latched. I wonder if loosening the, umm, strike plate would work? In any case, it's better now than before I started.

And the plane is working better.

Oh, I think you would be happy to see the little platform I made for the door the last time I was here. (Neil was a big part of the process.) When I took Mom to the doctor in January, she mentioned to him that she fell on her 'okole going out the door. The platform is the same height as the floor in the bedroom, so she walks straight out through the door. We also put a handrail. Keith drove most of the screws for that.

After I installed the platform, Neil and I think Jana remarked it would be nice if it was moved about 6" to the right. Neil did that operation and I think it was a good change.

About Keith: You would be happy to know that he passed FAA school and is working now at the Oakland ARTC center. I'm sure you remember visiting there many years ago. He lives near Sheri and Peter.

Oh, and I've been thinking about changing jobs. Yes, I remember you told me to find a job with a good company and stay there. Well, that worked for the first 26 years, and it's worked well enough for the next 16. But after 42 years, I'm thinking to maybe try something else.

I expect to be visiting Apple to see if it's a good fit for me. The guy hasn't given me a date yet, but it's OK because I'm in no hurry (there's something I'd like to finish at NetApp before I go, if I go). There's another place that I visited, a small company that would be exciting to work at because it's still in its early stages.

Dad, I still miss you terribly sometimes. You know that a lot of the time I try to do what I think you would do, or would want me to. I always think of you when I give blood, which I did a couple weeks ago. Next year I think I'll hit 8 gallons.


Love,

Wednesday, June 27, 2018

Retribution or restoration?

My buddy “Homer” was in the men’s recovery program at Cityteam San Jose. We have a weekly appointment, but he called to say he couldn’t meet me; triggered by a big disappointment, he’d yielded to the siren song of the bottle.

The lovely Carol was packing for a road trip, and our little dog was skittish. Showing her anxiety or her displeasure or maybe both, she also displayed a regression in her, ah, continence—once on our bedspread, and once on a bathmat we had near the patio door.

I heard a loud crash in the parking lot. Turning around, I saw the crumpled front end of an expensive European sedan. Behind the wheel of a white SUV that had smashed into it, the teen-aged driver looked stunned.

The model of retributive justice would jail or fine Homer, shoot the dog, and somehow punish the student driver. I have to think there’s a better way.

It’s probably because I’ve been thinking about restoration and retribution that I noticed these events, which occurred within a week; we all of us make mistakes, choose poorly, lose control from time to time. We hope to have fewer and milder such episodes as we get older and, we hope, wiser. And yet the only way to stop completely is to also stop breathing.

When I do choose poorly, lose my head, or just slip up, how do I want to be treated? Do I need to be jailed, fined, shot or something? I don’t think most of us want that for ourselves, though we may wish we could do that to someone else. What I want is help and restoration, and so I must offer that to those in my world. I thanked Homer for calling me, and told him about naltrexone. I am now more diligent to let the dog out first thing in the morning, and also whenever she indicates to me that she needs it—and also to give her enough cuddles. And I told the teen-ager that it’s very important to get behind the wheel again as soon as he reasonably could.

Of course, it’s not always as simple as that. If the undesirable behavior were to continue, and it became evident that it sprang from disregard for oneself or others, we would want to take some other action, but ultimately our aim would be recovery, restoration of trust, rehabilitation. In the dog’s case, some consultation with a trainer would probably be indicated.

The Apostle Paul wrote in Galatians 6, “Beloved, if a man is caught in any trespass, you who are spiritual, restore such a one in a spirit of gentleness, looking to yourselves, because it could have been you.” Actually I think in the NASB it reads “yourselves, lest you too be tempted,” but my old friend’s paraphrase is more striking.

Because it really could have been me. Why did that boy’s car, rather than mine (when I was learning to drive decades ago), hit the late-model Mercedes sedan? Because I was so much more skillful? Ha! I’ve made many many mistakes in my life, and things could have gone horribly wrong. In Hebrews 5 we read that a high priest “can deal gently with the ignorant and wayward, since he himself is beset with weakness.” Since we are “a royal priesthood” (1 Peter 2), we do well to remember that we are in fact beset with weakness, and as our Lord said, “Do not judge, lest ye be judged.” (Matthew 7 I think, AV)

This attitude of humility is important to remember, which does not make it always easy to remember. Do I sometimes say to myself, “How awful! I would never...”? Of course I do; so do you. But I like to think I remember soon afterward that “there but for the grace of God go I”: given a different set of parents, a different set of strengths and weaknesses, different experiences growing up, then I could very easily end up being just like that guy I think is so terrible.

Saturday, May 19, 2018

Norwegian Air experience: short-haul and long-haul

Short version: We took Norwegian Air OAK-ARN-AMS (Oakland California, Stockholm/Arlanda, Amsterdam/Schiphol), and HEL-LGW (Helsinki-Vantaa to London Gatwick). There was a lot to like and I have few complaints.

You may have heard about Norwegian Air's astonishingly low prices on transatlantic flights. We flew them for the first time in April 2018. Our first flight was Oakland (California) to Stockholm. Of course the price for a checked bag is higher than you might expect, and meals, "free" on legacy carriers, are extra. We chose "low fare plus" or something like this, and pre-ordered meals. The total was a bit higher than the sensational prices you may have seen in ads, but it was still an excellent deal.

Seating was comfortable. I think the transatlantic flight was in a 787, hence a new airplane. How about the room? Though I'm short (5'3" on a good day), I have felt cramped on other airlines -cough-United-cough-; no problem on Norwegian. The first surprise was that the seat-belt sign was turned off pretty soon after take-off.

It seems to me that other airlines want to keep you immobilized as long as possible; Norwegian's philosophy seems to prioritize comfort. The first meal was also served pretty soon after take-off.

There was a power outlet at every seat—a US-style grounded outlet (maybe more but I didn't care), which we used for Carol's laptop; a USB jack for smaller electronics.

The meal was served on cardboard, rather than plastic, trays. It was a little surprising, but the trays worked well enough. They made me feel less ecologically evil, too.

As we approached our destination, the seat belt sign was left off longer than I remember from other airlines. Again, it seemed to me that Norwegian prioritized passenger comfort over immobilization (I'm guessing that other carriers keep passengers in seats longer to facilitate flight-attendant operations).

We were about 5 hours in Stockholm. I don't remember anything about the ARN-AMS flight.


Our next Norwegian flight was HEL-LGW. The departure gate was something like "50C", in Terminal 2. Seating near that gate (all the bus gates, really) was sparse in my view. Yes, I said "bus gates" -- we were loaded into buses, which took us out to where the aircraft awaited.

Bus gates aren't my favorite, but that may just be part of the package when taking a low-cost carrier. On this particular occasion, there was a delay once we got out to the airplane. I rather wished that they'd delayed getting us onto the buses, rather than loading us on and having us sit (or stand) on the tarmac in a rather overstuffed and under-ventilated bus. It felt like half an hour but was probably 15-20 minutes.

Anyway, we got onto our airplane and we had the same short-term confinement to our seats (this was 26 April 2018, i.e., after the Southwest engine explosion on April 17); we took off and pretty soon the seat-belt sign went off.

I was delighted to discover that we had free wi-fi aboard. It wasn't fast, but I could read and send email.

Filling water bottles at HEL, Helsinki-Vantaa Airport, terminal 2

Water in the airport rest-rooms is drinkable but may be slightly warm and not very appetizing. As of 26 April 2018, cold water (also hot water) can be found at two dispensers between gates 53 and 54.

Sunday, March 18, 2018

Directed Writing

I don't remember the prompt for the first one, but here's what I wrote:

The headlights slowed as they approached, and I took a last drag before flicking the butt into the night.

I stepped onto the cab's ladder to reach the door handle and swung my knapsack onto the floor. “Howdy, and thanks—” I said as I shut the door.

The first surprise was her voice. “Evenin’, stranger,” she said as she steered the 18-wheeler back onto the highway.

Immediately I sat up straighter. “Thanks for stopping, ma’am.”

That got me a guffaw. “Don’t call me ma’am—I work for a living!”

“You navy?” I tried.

“Marines!” she said. “Made sergeant but two tours was enough.”

“Thanks for the lift, Sarge,” I said.

“Where you headed?”

“Anywhere but here. Did some stupid things here. Lost my company, family, house. All I got left is my bones.

“You got a passport?” Sarge glanced at me doubtfully.

“Turns out I do,“ I said. “Needed it for business travel. Not any more, though.”

“Well, sailor,” she said. “This load’s headed for Manitoba. Can you navigate? On land I mean.”

“Sure, Sarge. I was an ensign


I ran out of time there. Here's the next one, addressed to my late father.
It was just the other day I felt the rail scraping the top of my head. I might have let out a yelp. It amused you that I had grown too tall to walk carelessly under that old kitchen table.

Where were we living then, Dad? Was it the year JFK was elected? Were we in Manoa then? I remember the curved tubular steel legs and the leaf in the middle— I don't think I ever saw the table without it.

But I don't recall which way it faced, or whether the girls were born yet.

Nothing profound, just a snapshot—discovering that my head reached the rail, seeing your smile and hearing your chuckle just the other day, not quite 60 years ago.

Sunday, January 07, 2018

Who are you?

A few days ago, in this prayer guide from https://pray-as-you-go.org, the following paragraph appeared:
Just one question to think about today, a question asked in this passage: “Who are you?” – not as easy a question to answer as it might seem. Imagine that you have been asked that question; what words would you find to answer? “Who are you?”
The passage was from John 1, where priests and Levites quizzed John the baptizer.

With a decade at most before retirement, I’m finding the question a lot more interesting. A passage from Wendy M. Wright’s Exploring Spiritual Guidance (Nashville, TN: Upper Room, 2006; ISBN 0-8358-9834-2) came to mind. It doesn't explicitly ask that question, but shows some of the wrong ways I sometimes answer it:

A career woman I know once spent a month at a L’Arche community farm. L’Arche is an organization that brings together persons with mental challenges and persons without such challenges into a shared life experience. This woman went with the idea of helping others, fulfilling her Christian duty by using her gifts on behalf of less fortunate persons. Her experience was exactly the reverse. A city girl, she found herself quite helpless on a farm. She had to be constantly tutored in the most gentle and compassionate way by those she had imagined she would serve. As this woman gradually came to accept her dependence on others, she became aware of all the subtle ways she had learned over the years to mask her neediness. Always having to look good was one way. Always having the right answer was another. Always being competent was a third. She came to see that the tables had turned. The very persons she came to help were helping her. They were her spiritual mentors in the way of God’s love and the dignity of each human life. (56)
Paraphrasing, three wrong answers to “Who am I?” are:
  • The one who always looks good (I take this to mean reputation rather than beauty because, well…)
  • The one with the right answer
  • The competent one

Now there’s nothing wrong (I hope!) with wanting to look good, or wanting to have the right answer (rather than wrong ones), or wanting to be competent (rather than…?). Reputation, knowledge and competence are good servants but they make poor masters. If we find ourselves in a place where reputation is useless (as Nouwen did at L’Arche), where questions have no real answers, where there is no human competence—what do we do then?

I had lunch lately with an old friend, a very smart guy, a former professor and consultant. We worked together on and off from the ’80s into the early 2000s. A while ago, the executives who knew him all retired, and he's left without (as he put it) “interesting problems to solve.” I look at him and see my future.

Well, part of it, anyway. The part about no interesting problems to solve, that’s not a happy prospect. It’s not just the lack of problems, but the lack of people who are interested in whether I solve them. Am I interested in getting approval and appreciation? Of course I am! But almost as much, I’m interested in doing something for people, helping them make progress on their goals.

This is one way I know I was never cut out for the monastic life. Regarding that life, Merton wrote in No Man Is an Island:

The human affections do not receive much of their normal gratification in a life of silence and solitude. The almost total lack of self-expression, the frequent inability to “do things for” other people in a visible and tangible way can sometimes be a torture and lead to great frustration. That is why the purely contemplative vocation is not for the immature. One has to be very strong and very solid to live in solitude.
8§18 (p. 155, 2003 B&N edition)
As much of an introvert as I am, I’ll tell you right now I'm not “very strong and very solid” in that way.

Back to the original question, “Who are you?”—the answer, “I’m a software engineer at N--- Inc.” isn’t factually false, but neither is it the right answer. “I’m a husband and father” is more meaningful and enduring, as it’s not contingent on my current employment situation.

As you can see, I struggle a bit with the answer. A Christian-ly correct answer might be, I’m an adopted child of my heavenly father. Now this one is true but also meaningless to a lot of people I know. What does that mean to anyone unfamiliar with the jargon, and what comfort does it bring to me? I mean, God loves me, but (as Judd Hirsch's character says in Ordinary People) “he likes everybody—he’s got no taste.”

The answer I want to be the most true is: I’m a man who’s becoming more compassionate, peaceful, patient, kind, courageous, generous—a man who, when people talk with me, they feel empowered and liked and encouraged and strengthened. Whoa, it just hit me, I mean just at this moment as I type—I know what I want. I want this verse from Isaiah 58 to be true of me:

And your ancient ruins shall be rebuilt;
    you shall raise up the foundations of many generations;
you shall be called the repairer of the breach,
    the restorer of streets to dwell in.
Isaiah 58:12 RSV

Sunday, December 17, 2017

Life imitates code

Sometimes life imitates art, as they say; this is a case where life imitates code.

It started a half-century ago at least (the story, not the code). Way back when I was in elementary school, Dad gave me the idea of making “Soma cube”s out of wood. I don’t know how many of these I made back in grade school, but a few years ago I started doing it again.

Then about this time last year, I wondered what it would be like to write a program to solve the puzzle. This page has links to the source code for a solver written in C++; I couldn’t run it because I don’t do Windows. I soon decided to keep the data representation but otherwise write a new solver in Python.

The solver places the “T” piece in the only way possible (as explained here in the wikipedia article), then places the “L” piece in one of 28 unique positions. Here “unique” means never having to say “that’s a reflection of a previously-described solution”; ask me for details or see the code if you’re hungry for details. Anyway, the other pieces—V, Z, A, B, P (wikipedia’s nomenclature)— get placed after T and L.

Consulting a recent output, I discovered that the “V” has 103 possible placements (by “possible” I mean given the position of “T”), whereas the “P” has only 42. For some reason I had the intuition that placing the “P” first would use less CPU time.

I ended up coding a sort step so that the solver would place the “hardest” piece (the “P”) first, and then the pieces with increasing numbers of possible placements, and finally the “V” last. How much of a difference does it make? I don’t recall, but I’ll just try it now on a 2.4GHz Intel Q6600:

$ time ./soma2-unsorted.py > s2-unsorted.out

real 3m46.587s
user 3m46.564s
sys 0m0.004s
$ time ./soma2.py > s2-sorted.out

real 0m38.732s
user 0m38.720s
sys 0m0.008s
$ 
That’s 226.6 seconds vs. 38.7 seconds, a nontrivial difference.

Fast-forward to earlier this month. I was thinking again about wooden puzzles and wikipedia told me about the “diabolical cube”, with only 13 solutions, and it’s here that life imitates code.

Because of my experience with the Soma cube solver, I immediately started by placing the “hard”est-to-place pieces first, and then try to place the easier ones. By proceeding that way, I figured out the first several solutions. But to get the rest of them, I modified the Soma cube solver… after a few tries it worked, completing in about a second. Here’s an actual run on the same box as above:

$ time ./diacube.py  > d.out

real 0m0.978s
user 0m0.976s
sys 0m0.000s
$
The 7-cube piece must be placed parallel to a face of the desired 3x3 cube; it can be
  • actually on a face—in this case, the rest of the pieces determine a unique solution; or
  • between two faces—in this case, it’s possible to create solutions that are reflections of each other. I could have avoided this by coding for placement of the second piece (I would have done this to the 6-cube piece) but instead opted to write a little code to keep only one solution out of a pair of reflections.
There wouldn’t be many of these, because my program produced 17 solutions, whereas Wikipedia told me there were only 13. So it computed only 4 redundant solutions, and it would take longer to think about unique placements than it would be to write the code to find reflections.

Or so I thought. I goofed up the code that looked for reflections, because I had forgotten that my solutions contained references to each polycube’s placement. In computing a reflection, I trashed the original polycube. A rookie error.

Anyway, if you ever get your hands on a “Diabolical cube,” it’ll be a lot easier to solve if you place the 7-cube piece and the 6-cube piece and the 5-cube piece first.

For reference, I’ll give you the 13 solutions, after some blank space if you want to avoid the spoiler :)

solution 1:
6 6 6
4 4 2
4 4 2
7 6 6
7 7 7
7 7 7
3 3 6
5 3 5
5 5 5
solution 2:
6 6 6
4 4 2
4 4 2
7 6 6
7 7 7
7 7 7
5 5 6
5 3 3
5 5 3
solution 3:
6 6 6
2 4 4
2 4 4
7 6 6
7 7 7
7 7 7
3 3 6
5 3 5
5 5 5
solution 4:
6 6 6
2 4 4
2 4 4
7 6 6
7 7 7
7 7 7
5 5 6
5 3 3
5 5 3
solution 5:
6 5 5
6 6 3
6 6 6
4 4 5
4 4 3
2 2 3
7 5 5
7 7 7
7 7 7
solution 6:
6 5 5
6 6 3
6 6 6
2 2 5
4 4 3
4 4 3
7 5 5
7 7 7
7 7 7
solution 7:
4 6 2
4 6 2
5 6 5
4 6 3
4 6 3
5 5 5
7 6 3
7 7 7
7 7 7
solution 8:
4 6 3
4 6 3
5 6 5
4 6 2
4 6 3
5 5 5
7 6 2
7 7 7
7 7 7
solution 9:
4 5 5
4 3 2
3 3 2
4 5 6
4 6 6
6 6 6
7 5 5
7 7 7
7 7 7
solution 10:
4 5 5
4 3 3
2 2 3
4 5 6
4 6 6
6 6 6
7 5 5
7 7 7
7 7 7
solution 11:
3 5 5
4 4 2
4 4 2
3 5 6
3 6 6
6 6 6
7 5 5
7 7 7
7 7 7
solution 12:
2 5 5
3 4 4
3 4 4
2 5 6
3 6 6
6 6 6
7 5 5
7 7 7
7 7 7
solution 13:
3 5 5
2 4 4
2 4 4
3 5 6
3 6 6
6 6 6
7 5 5
7 7 7
7 7 7