23 May 2021

A long gap

Well, it’s been nearly two months since we last chatted, sorry for the inconvenience (as the Creator said to his Creation (in the fifth (I think) book of the Hitchhiker’s Guide to the Galaxy trilogy)). A fair bit has happened in the interim.

  • I am no longer a callow youth. I’m now less than four years away from 0x40. Yes, that’s right, I turned 0x3C this year. Admittedly, people make a big deal of turning 0x3C, but I don’t know why. After all, The Beatles didn’t write a song about that, they wrote “When I’m 0x40”.
  • I am fully vaccinated against Coronavirus Disease 2019 (aka COVID-19), via a two shot Pfizer regimen. I’ll note that, unlike some other folks I know, my second shot was followed by 12 hours of sore shoulder, followed by 36 hours of feeling pretty lousy. Frankly, it’s as sick as I’d felt in 5 years or so, and that was just my immune system letting me know it learned an awful lot from the first vaccination, thank you very much.
  • I completed my 14th year of employment with my current $FIRM. Still learning new things, still having (some) fun. So I’ve got that going for me. That tenure of employment almost reaches the median tenure for the firm, if that tells you anything.
  • We did a road trip up to Maine one Friday to take care of important family business… then drove back home the next day, because I had work obligations on the Sunday. Twenty hours of driving in two days is a lot, but this was totally worth it.

Ladders

I have four ladders.

  1. A 6 foot step ladder.
  2. A 12 foot folding aluminum ladder.
  3. A 24 foot fiberglass/aluminum extension ladder.
  4. A pull-down garage attic ladder that has two hinge points.

This is a story about the fourth ladder. A couple of weeks ago, I was putting some items up in the garage attic. Two or three trips up and down the ladder. All done, I came down the ladder and it failed on me as I reached the third step. The wood broke away from the metal hinges on the bottom section at the left and the ladder torqued to the right, trying to pitch me off.

The ladder failed in it’s nefarious plot, as I always retain at least two points of contact on short ladders (and three on tall). So I merely executed a rapid, controlled vertical descent, and incurred just a slight scratch on my left arm for my troubles. The ladder was… less well. However, I had other things to do, and no time to deal with making the repair-or-replace decision. So I bent the hinged area back to moderately straight, folded the ladder up, and put it out of my mind for a couple of weeks.

Today, after the shopping, it was time. So I placed one of the garbage totes in position to support the busticated ladder, and had a look:

The failure point on the broken attic ladder

You can see where the wooden side of the ladder catastrophically failed. However, there was also a missing nut, and one missing metal ‘L’ strap (another one is shown above sitting in the place where it, and the missing nut, should have been). All that being so, upon examination, I felt that I had the materials, tools, and skills to repair this $300 US ladder, in less time that it would take me to unmount the broken one, and mount a new one. So overall, this would be a net win.

Dis-assembled and laid out on the table saw extension.

At the point shown in the picture above, I was actually well along in the repair process. But this was the point at which I laid out all the old parts to ensure I had everything I needed to re-assemble the ladder. Shown above is the slightly brighter ‘L’ bracket I fabricated from a bit of strapping I had laying about. You’ll note the extra chamfered hole in that strap, not needed in this application, but not critical for its presence, either.

The same layout, but with freshly fabricated ladder sides

Because I had one unbroken ladder side, and they’re mirror images of each other, it was easy to use the one side as a template to replace both.

Why both? Because the wood is old and if one side was brittle enough to fracture like that, I expect the other side is too.

What about the rest of the ladder? Another good question. I thought about it, and frankly, it wouldn’t be hard, just time consuming. And its the uprights on the lowest section of the ladder that take the greatest strain and beating. So I made a decision to just replace those.

Fabrication itself wasn’t hard. I find myself wishing I actually had a T-bevel gauge. I always end up cobbling something together that can do the job (as I did this time), but a bevel gauge would be a better choice. It’s on my list.

Here’s what I used/did:

  • Spare dry pine in 1×4, of sufficient length to make the parts, plus spare if I screwed one up.
  • Miter saw for the ends.
  • Mocked up bevel gauge to mark the boundaries of the step slots.
  • 3/4″ bit in the router to make the step slots.
  • Clearance holes drilled for the #10 bar that goes under each step, and for the 1/4-20 hardware for the hinges.
  • A bit of light sanding, and a few passes with the block plane to ease the corners on all the long edges.
Ladder re-assembled, sturdy, and safe.

Re-assembly tool less than 10 minutes. I also checked/tightened all the rest of the hardware. Then I executed a brief test climb, and a couple of well-braced bounces on the ladder to ensure it is once again sturdy. All good.

Winding Down

Our condolences to the family and friends of Staff Sgt. Christopher F. Pantos, 55, of Richmond, Virginia, who died on Apr. 26, 2021, at Ali Al Salem Air Base, Kuwait, as the result of a non-combat related incident.

We also hope that all y’all are doing okay. It’s been a long string of stress-full years hereabouts, and the pandemic made it all worse. In this small part of the world, today things seem a bit better. The big deal now is to protect Democracy and throw and/or keep the Trumpublicans out of office. Seriously. Job One.

11 January 2021

Shoes Keep Dropping…

Sadly, it’s not a case of waiting for the other shoe to drop. Instead, it’s shoe after shoe after shoe … What’s up there? A millipede? The news, it is nearly uniformly terrible, so let’s take that as read.

We’re doing okay. I’m baking.

Baking oatmeal chocolate chip cookies

Who doesn’t need cookies, even in the best of times? They’re even better in these times. So I made a double batch.

Lexi wants to be warm

Lexi, the chipuggle rescue mutt, is around 12 years old. Being warm seems to be more of a priority for her these winter days. So, laying on an electric blanket and covered in a t-shirt is an attractive pastime.

Winding Down

No casualty notices out of DoD over the last 28 days. It appears they’re not reporting COVID-19 deaths as casualties – but they’re happening all the same.

See y’all around.

13 December 2020

Friday the 13th falls on a Sunday this month

That said, we’ve not experienced a significant run of ill luck yet this day, but then neither of us suffer from triskaidekaphobia.

We are having intermittent warm and cold stretches, with a possibility of some icy precipitation on Wednesday upcoming – Marcia’s looking forward to that. Lexi can do without the heat of summer or the cold of winter, but she does look forward to curling up on the electric blanket in the mid evening on cold nights…

Lexi, the chipuggle mutt, curled up on the electric blanket
Lexi curled up on the electric blanket

Not much else to report yet. I’m waiting to see what happens come Monday.

Winding Down

Our condolences to the family and friends of Captain Kelliann Leli, 30, of Parlin, New Jersey, who died on November 27 in a non-combat related vehicle incident at Al Dhafra Air Base, United Arab Emirates.

Meantime, please stay safe, mask when you need to be around people you don’t already live with, etc. The vaccinations are coming, but it’ll be months…

667

It has been a month or so, but I’ve been … busy. Even though we’ve been healthy, as have our extended families, the coronavirus situation, in juxtaposition with the political environment has made for a stressful time. I wish I were hopeful on all fronts, but I’m going for survivability at the moment. Or an asteroid strike. Decisions, decisions.

Why 667? Well, it’s the number following the Number of the Beast, and the post that’s been sitting on top of the page for the last month was also the post numbered similarly. So it’s a bit of a celebration of having snuck past Old Scratch.

While I haven’t packed on a lot, I have been doing a fair bit of stress eating over the last few months. Having drawn my own attention to that behavior, I am working on replacing that with anxiety exercise. Wish me luck, I’m doing okay so far…

We did get out fishing once in the past month, and I caught a small bass, yay! This week, when we could have done that again, Marcia had an appointment, and I filled two mid-week vacation days with non-relaxation tasks: drywall, roof sealing, and some serious cleaning of both vehicles. Today I was glad to be back at chair and keyboard for a bit – it’s less tiring than “days off!”

()f course, it’s a three day weekend in these parts, so I’ve got three days to fill with further chores – probably some more fall yardwork, to be honest. Then I’ll drag out the trench coat and the squint for Columbo Day. One more thing…”

Winding Down

Our condolences to the families and friends of the following fallen warriors:

  • Senior Airman Jason Khai Phan, 26, of Anaheim, California, died on September 12 in a single-vehicle non-combat related accident while conducting a routine patrol outside the perimeter of Ali Al Salem Air Base, Kuwait.
  • Staff Sergeant Ronald J. Ouellette, 23, of Merrimack, New Hampshire, died on September 14 in a single all-terrain-vehicle non-combat related accident on the flightline at Ali Al Salem Air Base, Kuwait.

Take care of each other, y’all.

7 September 2020

Staying Busy

Yeah, it’s been a month. I’m dancing as fast as is reasonable in these terrible and weird times. And sometimes I’m building stuff… Sometimes building stuff means building other things first, in order to build the thing desired. Yep, a fixture:

A fixture. That 30 degree angle is important…

Once the fixture was done, I could work on parts:

The fixture holds some schedule 40 pipe… and there’s a router?

With the fixture to guide the router, I could cut slots into the schedule 40 pipe, in a specific orientation to the 30 degree angles the pipe was cut at. Then I could screw the pipe lengths onto the final product:

The thingumy has been built.

The slots at the bottom? Just for access to screw the pipe into the backing there, too. The slot at the top? That’s for accomodation of the things stored therein:

It’s a fishing rod holder for Marcia’s truck.

Yep. A fishing rod holder. This is a lot better than a clutter of rods tangling themselves while lying on the floor mat in the back, there.

Keeping Alright…

We’re keeping alright, thanks. Between the coronavirus and this administration, things are frankly a little too “interesting times” for my taste, but all I can do to improve the prospects for both is to vote.

Vote, y’all! Make sure your registration is correct and current. If you want to do a mail-in (or absentee) ballot for the safety of all concerned, please research how to do that in your jurisdiction, early. Don’t procrastinate.

Winding Down

There have been no casualty announcements on the DoD site in the last month. If true, I’m glad.

28 May 2020

Rather Closer to the End

Well, the beginning was a good long time ago. And one thing I can always take away from the Drake Equation is that a primary reason that we’re alone is because civilizations just don’t last long enough to get past the deeply stupid stage that follows the enlightenment. Whether we do it to ourselves, or Giant Asteroid ’20 does the job for us, the bell is tolling.

I know, I’m a cheery sort of bloke, eh? You look at the news. I’ll go back to the small shit that I have control over. Like …

The garden is alive. Almost two weeks and nothing’s dead yet. On Saturday I’ll take off the bird netting, weed out the beds, and set the tomato plant cages. Yay!

SSH Agent Persistence vs CSH/TCSH

Y’all can skip this part if you want. It’s here as much for me to find it again if I ever need it as for anyone in Greater OutThereLandia.

The problem is “simple”. I have a group of systems I’m responsible for. The developers have a whole suite of scripts and processes based on the fact that they use the modern incarnation of the C shell, tcsh. I’m migrating them to newer platforms, and newer code repositories, remote code repositories. Access to these repositories requires SSH access. SSH key pairs are the answer to the problem, but the private key requires a passphrase to meet our security requirements.

Persistence across multiple login sessions is the key for the developers. Once they have an active login session on the platform, they want to leverage their SSH authentication without re-entering the passphrase each time it’s needed, or even each time they login (simulateous sessions) on the system.

All the tools I have laying about for managing persistent SSH keys across multiple sessions are pretty much Bourne shell based, and mostly I use a tool called keychain, written a while back by Daniel Robbins of Gentoo fame. I needed to find out how other people are solving this problem for csh/tcsh users.

What I learned is that not very many people are using csh/tcsh anymore. BUT. But, I found Mark A. Hershberger, who many moons ago wrote a page about managing SSH Agent via scripts, with a link to a sub-page with solutions for alternate shells (like tcsh/csh) – http://mah.everybody.org/docs/ssh-agent-startup … yes, that’s a plain HTTP link, no SSL, and your browser will hate it. Don’t worry, you’re not logging in or doing any banking there.

This was an awesome find for someone like me that spends little or no time in tcsh, but knows that it’s a bit of a janky environment for scripting things. I read, understood, and implemented the script as written. It didn’t work. Sigh. After a couple of hours complete with gnashing of teeth and pulling of hair, it turns out I was getting clobbered by a default feature of the environment called noclobber, which effectively prevented me from overwriting a file that already exists via redirection. So, if noclobber is set (which is part of the environment for these devs), then this code won’t work, if the target file, /tmp/blue.txt, already exists:

echo "I\'ve got the blues!" > /tmp/blue.txt

Once I learned about noclobber, and determined that I could not unset it and leave it unset because of user expectations, I found that I could force the overwrite with the judicious application of a ‘!’ character to decorate the redirection. This works, whether or not /tmp/blue.txt exists:

echo "I\'ve got the blues!" >! /tmp/blue.txt

With that problem out of the way, I was able to get the code to run at login. Then I started piecing together the logic I wanted to actually apply for these development users. For login, look for a file that defines an existing SSH Agent session. If that file doesn’t exist, or if it contains information about a defunct session, it will start a new SSH Agent session. IF there’s a running SSH Agent session, it’ll check to ensure the key is loaded, and prompt to load it if needed. So, this code goes into the users .login file in their home directory:

set sshAgent=/usr/bin/ssh-agent
set sshAgentArgs="-c"
set tmpFile=~/.ssh/ssh-agent-info
#
Check for existing ssh-agent process
#
if ( -s $tmpFile ) source $tmpFile
  echo $SSH_AGENT_PID
  if (! $?SSH_AGENT_PID ) then
    # echo "No $tmpFile, starting new agent…"
    $sshAgent $sshAgentArgs | head -2 >! $tmpFile
    source $tmpFile
    echo "ssh agent started [${SSH_AGENT_PID}]"
    ssh-add
else
  # the tmpfile was present with data, check it…
  # echo "Found $tmpFile, check data"
  set this=`ps -elf | grep ${SSH_AGENT_PID} | grep ssh-agent`
  # start ssh-agent if status is nonzero
  if (( $? != 0 ) && ( -x "$sshAgent" )) then
    # tmpFile exists, but stale data
    $sshAgent $sshAgentArgs | head -2 >! $tmpFile
    source $tmpFile
    echo "ssh agent started [${SSH_AGENT_PID}]"
    ssh-add
  else
    # Agent running, ensure a key is present
    set sa_data=`ssh-add -l`
    if ( $? != 0 ) then
      # need to add key
      ssh-add
    endif
  endif
endif

The original script for exiting the session would kill the SSH Agent outright. This is not so useful if you still have other login sessions running. So I wrote a few lines to attempt to ensure that only when the last running login was being exited, would the SSH Agent be reaped. This code goes in the user’s .logout file in their home directory:

set tmpFile=~/.ssh/ssh-agent-info
set sessCount=`w | grep $user | wc -l`
if ( $sessCount == 1 ) then
  # last user, clear out the ssh-agent
  eval `ssh-agent -c -k`
  /bin/rm $tmpFile
endif

And the solution works. The developers are minimally unhappy about the increased security wrapped around access to the code base, because they know I worked to make it as painless as possible while meeting policy requirements. It could always be more robust, but I tried to get all the common failure cases, and mostly the resolution to something I didn’t catch is for the user to log out of all of their sessions, then log back in again to reset.

Winding Down

Our condolences to the family and friends of 1st Lt. Trevarius Ravon Bowman, 25, from Spartanburg, South Carolina, who died on May 19, 2020, in Bagram Air Force Base, Afghanistan, from a non-combat-related incident.

Our hearts go out the families who have lost loved ones to COVID-19. Y’all, socially distance, wear a mask when you need to (indoors around other people for sure), and WASH YOUR DAMNED HANDS way more often.

Please don’t be one of the people who want to go into retail (or any other) businesses without a mask. Don’t be one of the people trying to up your chances of being DEAD by the time the General Election rolls around. Even if you don’t care for yourself, do you want to get ill, pass it on to an elderly parent (or a young child) and have them DIE because you’re behaving like a petulant child yourself? No, no, I understand that your role model in this case does indeed behave much like a petulant child. Don’t follow that particular lemming off the cliff. Stop. Think. Listen to medical professionals and keep safe.

I love you ALL.

17 May 2020

Spring, huh?

So, since we last were here together, we had several more overnight freezes. Sadly, at least one of them was a surprise. So one night I didn’t tarp the garden beds, and everything died. Yup, all of it. So I started over. Rototilled again, raked it all out flat again, bought new plants again, and got ready to put them in the ground, again:

Two garden beds ready for planting... again. Tomatoes and peppers in ready for transplanting into the soil.
Two garden beds ready for planting… again.

We’re not due for anything below 48F in the next ten days, so I expect that we’re actually done with overnight frosts. (Famous last words). But the plants look good, and since I did that work yesterday, everything is still alive:

Plants in the ground
Plants in the ground

Right now I’ve just got a variety of tomatoes and peppers, since those are what I want most. I’ll probably pick up some herbs and some beans to go in, in the next few days.

Lexi the mutt at my office window (Lexi TV)
Lexi at my office window (Lexi TV)

While it remains spring-ish, Lexi likes watching “Lexi TV”, quivering and growling at the vicious bushy-tailed rats (squirrels) invading her back yard.

Winding Down

Our condolences to the family and friends of Sgt. Christopher Wesley Curry, 23, from Terre Haute, Indiana, who died on May 4, 2020 in Erbil, Iraq, from a non-combat-related incident.

Marcia has been baking up a storm, and, well, I love it. I’m ordering some double doors to install in all the door frames, and getting pricing information on the necessary permits…. but it’s all delicious!

We continue, reasonably healthy, mostly home-bound, wondering what the idiots are going to say next.

The bright spot is that our state, in the process of putting off the primary, did so to ensure that this was a vote-by-mail election. We received our ballots, and our instructions in Spanish, completed and mailed them. Yesterday, the instructions in English arrived. Ah, well. We were able to figure it out. Pleased that unlike some Republican-led states, ours was sane enough to ensure that people didn’t have to stand in close proximity to each other to exercise their constitutional right to vote. Yay, Maryland!

Be safe, stay home as much as possible, mask and socially distance when you must be out. Please. If not for yourself, then for the people who love you and will miss you when you die of covid-19, with complications of politics and lack of sanity.

3 May 2020

Nothing to Report

Seriously. Boring is great, by comparison with the many things that could be going wrong. The garden is alive. We’re alive. Life is (distantly) okay. That’s good enough, right? Be well.

22 March 2020

#WFH

First, we’re healthy at this time.

Yup. Most folks I know hereabouts are working from home (WFH). Me, too, but for one day a week when I’m the only one in my department to go into the office for required onsite work requiring physical interaction – tape backups rotating offsite.

I actually put in about 4 hours this weekend, too, on regularly scheduled patching activities that I would have done from home on a Sunday, anyway.

Saturday was yardwork, roasting coffee, and some other chores.

By next weekend, it’ll be time to make a brief run to the store for groceries, etc.

Give yourselves space, time, and forgiveness. Do the best you can to protect yourselves and those around you.

15 March 2020

Ides of March

Happy Birthday, Alex!

What’s new?

The good news is that we already practice social distancing a lot. Hope y’all can manage that, too! Wash your hands a lot, keep the people around you healthy by keeping yourself as isolated as is reasonable and possible.

We’re both healthy at this time, and we’ll do our best to keep it that way!

I did get the shopping done today, which took a while, since there were lines. I also roasted coffee.

Lexi

Relaxing:

Lexi the mutt relaxing on her back, on the sofa.
Lexi relaxing…

Winding Down

Our condolences to the families and friends of these fallen warriors:

  • Gunnery Sgt. Diego D. Pongo, 34, of Simi Valley, California died on March 8, 2020 while supporting Iraqi Security Forces in north central Iraq.
  • Capt. Moises A. Navas, 34, of Germantown, Maryland died on March 8, 2020 while supporting Iraqi Security Forces in north central Iraq.
  • Army Spc. Juan Miguel Mendez Covarrubias, 27, of Hanford, California died March 11, 2020, when his unit was engaged by enemy indirect fire at Camp Taji, Iraq.
  • Air Force Staff Sgt. Marshal D. Roberts, 28, of Owasso, Oklahoma, when his unit was engaged by enemy indirect fire at Camp Taji, Iraq.