PSA: crypto & pig butchering

First they befriend you online. They provide an extraordinary level of online attention and [usually] romantic interest. They casually “let slip” how much money they’re making from their crypto “investments.” They encourage you to also make money investing in crypto. After investing a little bit to test the waters, you earn unbelievably good returns. They have fattened up your confidence with time, a romantic relationship, and investment gains. After you invest more, they ghost you and both your money and relationship is gone.

The “pig” in this story is the victim and the butcher is a Chinese captive working in a forced labor camp in Myanmar or Cambodia. These scams particularly target the elderly, so do your part and raise awareness with those you love.

Lectric XP brake upgrade

I have a Lectric XP 2.0 e-bike I purchased in 2022. I ordered it with the cargo package (front and rear racks & baskets), intending to use it to reduce car trips for local errands and grocery shopping. Without any planning I can easily carry home two grocery bags on it. With a couple bungee cords, I can carry home a fair bit more.

The rather basic single-piston brakes with 160mm rotors that came with it are good enough to stop the bike and I on most terrain. However, I live in Seattle and we have good sized hills out here. When riding down a hill with a load of groceries, a fair degree of planning is required to bring the bike to a stop on time. It seems Lectric was made aware of this deficiency because the XP 3.0 has upgraded the brakes to 180mm rotors and hydraulic brakes.

Today I upgraded my XP 2.0 with a TEKTRO 203mm rotor on the front and I replaced the Zoom single-piston calipers with XTECH HB-100 hydraulic dual-piston calipers. The improvement in stopping power was immediately noticeable and I’m looking forward to testing my next grocery run.

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 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: -

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: -

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
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 mirrors... 5 mirrors found.
Fetching public key from done.
Fetching snapshot tag from 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 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
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 /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?