PSA: shun TurboTax and H&R Block

Since I wrote in 2019, the biggest tax prep companies continue to spend tens of millions to prevent making tax filing simple and easy. They’ve been fined for bait-and-switch, hiding the Free File service they were paid to offer, and overcharging Free File eligible taxpayers. Instead of giving Intuit another nickel, use Cash.app taxes, a local preparer, or file paper returns.

4 Gallons

At my most recent donation, Bloodworks NW informed me I’ve now donated 4 gallons of blood. They tell me, “each gallon pin represents another eight lives saved.” I tried to corroborate that statistic and the nearest I found was from the American Red Cross who say that a single donation (1 pint) can save up to 3 lives. Each gallon is 8 pints (units).

It would be fun to know how much I’ve donated in total. I previously donated at Carter Bloodcare when I lived in Texas and the American Red Cross when I lived in Michigan.

Compared to rushing into burning buildings, donating blood is an easy and reliable way to save lives. You should consider joining us 2% of Americans who do so.

Goat Rocks Wilderness

At 5AM on Friday morning, we set out for the Snowgrass Hikers Trailhead. All proceeded according to plan until 26 miles off the paved road, a sharp rock tore a 1.5″ gash through one of my tires. I used my tire repair kit to insert 5 plugs, greatly slowing down the air leak. That was sufficient to hold air for about 10 miles, so we turned around and headed back towards civilization.

Upon hitting blacktop, we also got cell phone coverage. I called Tesla service and they would flatbed my car back to Fife, WA and replace the tire. Expecting that to take about 5 hours, I declined to explore my options. The two nearby rural tire shops had nothing in the correct size, so we headed towards I-5 and started calling every shop between us and Chehalis.

Les Schwab in Chehalis claimed to have a matching tire in stock. When we arrived, they had a Continental in 245/55R19, but it was the wrong series. They insisted they could only replace all 4 tires. My tires are nearly new, no thanks guys. Another call and Discount Tire in Lacy (27 miles North) had the correct tire, series, and size, so off we went again. The plugs held, Discount Tire replaced the tire, and shortly after lunch, we once again had 4 good tires.

For the second time, we set off for the Snowgrass Hikers Trailhead. As we got into the I-5 freeway, a car 5 car lengths ahead of us threw up something which left a quarter sized chip in my windshield. We pressed on and arrived at dusk. We camped overnight in Motel Tesla.

On Saturday morning we hiked over to Berry Patch Trailhead and headed North. We took the optional scenic detour to Goat Ridge and found the lookout is now ruins. We continued North and took the Lily Basin Trail #86. We stashed our packs and scooted out to Johnson Peak (7,257′) and tagged the summit at noon.

We descended almost bee-lining towards Heart Lake (a better route than our ascent), returned to our packs, and then visited Goat Lake. The camp sites were all full, the lake shore was crowded, but the lake was empty. I dove in and found out why: it was still ice-cold. We filtered drinking water, ate our first dinner, dried off in the sun, and then pressed onwards.

About a mile past Goat Lake we found an empty campground and set up for the evening. It was a lovely evening, cool and brisk and we slept well under my MSR tarp tent. In the morning we set our sights on the summits of Old Snowy Mountain (7,900′) and Ives Peak (7,920′).

Based on our previous days experience and the forecast, we again left our packs behind and headed for the summit of Old Snowy with just an extra layer and water bottles. Oops. As we ascended the wind picked up and the exposure made us regret the choice. To keep warm we picked up the pace and reached the summit before 10AM. We did not loiter and scurried right back down.

50° with 30-40 mph winds. Brrrr…

Being separated from our layers prevented us from hiking the ridge over to Ives Peak. We descended on the PCT, retrieved our packs, and then hiked out Snowgrass Trail #96 to the trailhead and our car.

haproxy dynamic TLS reloads

Haproxy has a great newer feature that lets one dynamically reload TLS certificates. I explored this today because I’ve had two instances in the past few months where haproxy stopped serving for time, at midnight when the cron job that renews TLS certs kicks off. I think it’s an edge case involving web sockets with a 1 hour timeout and a handful of TLS certs all renewing in close succession. Regardless, not having to reload haproxy at all sounded attractive.

The page above has this example for sending the certificate to haproxy’s admin API:

echo -e "set ssl cert /etc/haproxy/certs/site.pem <<\n$(cat ./new_certificate.pem)\n" | socat tcp-connect:172.25.0.10:9999 -

After exploring the vagaries of echo and echo -e and staring at the output for a few too many times, I finally determined the cause of the failure. The certificate I was attempting to send has a stray newline character. 🤦🏻‍♂️ The solution is simple, assure your boundary character doesn’t match the data:

echo -e "set ssl cert /etc/haproxy/certs/site.pem <<\n$(grep . ./new_certificate.pem)\n" | socat tcp-connect:172.25.0.10:9999 -

FreeBSD portsnap vs git clone

FreeBSD is planning to deprecate portsnap in favor of git or svnlite repos. As a heavy git user, part of me thinks, “about time!” There’s a number of discussions about the change on the email lists and the FreeBSD forums. What I wanted is some data on how the change will affect daily use. Should I use a deep or shallow clone? Which git repo should I follow? So I ran a few tests:

portsnapgit clone (freebsd)git clone (github)git clone (freebsd, shallow)
disk used (M)8011,9602,940888
compressratio2.231.221.111.83
checkout time (real)3m 36s41m 49s7m 11s3m 12s
Disk Usage and Time Required to Download

This is a FreeBSD 13.2 host with /usr/ports on a ZFS filesystem with lz4 compression.

# zfs get compression zroot/usr/ports
zroot/usr/ports  compression  lz4

# rm -rf /usr/ports/* && rm -rf /usr/ports/.* && rm -rf /var/db/portsnap/*
# time portsnap fetch extract
Looking up portsnap.FreeBSD.org mirrors... 5 mirrors found.
Fetching public key from dualstack.aws.portsnap.freebsd.org... done.
Fetching snapshot tag from dualstack.aws.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Fetching snapshot generated at Sun May  7 17:30:05 PDT 2023:
aa65708d65765ca77e1756616d249f3512ebb192c1ef16         102 MB 8131 kBps    13s
Extracting snapshot... done.
Verifying snapshot integrity... done.
Fetching snapshot tag from dualstack.aws.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Updating from Sun May  7 17:30:05 PDT 2023 to Sun May  7 18:18:52 PDT 2023.
Fetching 5 metadata patches... done.
Applying metadata patches... done.
Fetching 0 metadata files... done.
<snip thousands of lines>

# zfs list zroot/usr/ports && zfs get compressratio zroot/usr/ports
NAME              USED  AVAIL     REFER  MOUNTPOINT
zroot/usr/ports   801M  6.96G      813M  /usr/ports
zroot/usr/ports  compressratio  2.23x

# rm -rf /usr/ports/* && rm -rf /usr/ports/.*
# time git clone https://git.freebsd.org/ports.git /usr/ports
Cloning into '/usr/ports'...
remote: Enumerating objects: 5821903, done.
remote: Counting objects: 100% (942/942), done.
remote: Compressing objects: 100% (126/126), done.
remote: Total 5821903 (delta 923), reused 816 (delta 816), pack-reused 5820961
Receiving objects: 100% (5821903/5821903), 1.06 GiB | 488.00 KiB/s, done.
Resolving deltas: 100% (3512457/3512457), done.
Updating files: 100% (157219/157219), done.

real    41m48.997s
user    6m47.535s
sys 1m8.458s

# zfs list zroot/usr/ports && zfs get compressratio zroot/usr/ports
zroot/usr/ports  1.96G  5.80G     1.96G  /usr/ports
zroot/usr/ports  compressratio  1.22x

Eternal Glaciers

The mountains of the Pacific Northwest are tangled, wild, remote, and high. They have the roar of torrents and avalanches in their throats.

Rock cliffs such as Kloochman rise as straight in the air as the Washington Monument and two or three times as high. Snow-capped peaks with aprons of eternal glaciers command the skyline–giant sentinels 11,000, 12,000, 14,000 feet high, such as Hood, Adams, and Rainier.

There are no slow-moving, sluggish rivers in these mountains. The streams run clear, cold, and fast.

Of Men and Mountains, Foreword, ix

Wouldn’t the authors be sad to learn that those eternal glaciers aren’t?

Marker Alpinist and Leashes

I’ve been using B&D ski leashes since Art Freeman recommended them several years ago. They’re a superb alternative to the itty bitty short leashes the binding makers sell. I managed to go several years without breaking a fuse link, and this year I’ve already managed to break two.

Although mine seem to have failed during traveling near other pairs of skis, the fuses are designed to break during spectacular yard sales and to prevent skis from being avalanche burial anchors. Bypassing the fuses is suicidal, touring without a leash isn’t awesome, and so I searched for an improvement.

Marker doesn’t document the feature but my Alpinist bindings have two itty bitty holes for attaching leash cords. I found an online comment telling me where to find them so I tossed my skis onto the bench and gave the bindings a closer look.

The active mount has the black cord included with the leash. I populated the second hole with orange 3mm accessory cord and a spare fuse. Next time a fuse breaks, I can just pop the leash onto the spare.

 

Solar Shenanigans

In early November I flew to Dallas and helped my buddy Ryan install a solar array. Since he had a large low-slope metal roof on his garage, we decided that was the right place to put them. Ryan’s dad also helped and in two days, the three of us had hoisted three large stacks of panels up onto the roof, bolted them down, and wired them all together.

Then we pulled the feed wires onto the roof, hooked up the three strings and then spent a bunch of time futzing with the inverters, replacing optimizers, and updating the locations of panels whose optimizers had invalid serial numbers on them (pro tip, check them all on the ground beforehand). Then we hooked up his eGauge meter so he can monitor total production and consumption.

On day 3, the inspector showed up, checked a few things, asked some questions, and then approved the final inspection. Since then, Ryan’s solar array had been making me jealous. Between the much higher solar factor in Dallas and having more panels, his winter production is ~10x mine.