This was a lot of work, but I’m almost done. I stained the railing, main posts and steps with gel stain (java color). I wound up using it almost like paint, simply because I couldn’t get a consistent look otherwise. I then coated with many coats of wipe-on polyurethane.
The walls were primed with Kilz Original after a lot of patching (the previous owners were hard on the walls). I then painted with 2 coats of Sherwin Williams Duration, ‘Torchlight’ color. This is a somewhat bold color, but it’s what I used on the hallway wall on the second floor and this was just completing that work (I still had an unopened gallon of it).
Masking and painting the spindles took what feels like forever. They’re oak, so they got 2 coats of Zinsser B-I-N primer (to prevent tannins from seeping into the topcoat) and then 2 coats of paint. There were a lot more of these spindles, since there is railing all along the second floor hallway.
The baseboard on the landing is new, and the same as what I used on the second floor. I squished it tight to the carpet, and wedged cut pieces of aluminum flashing underneath to protect the carpet while painting it. Worked great. The carpet will get replaced, but I haven’t made up my mind on the carpet choice.
I finally got around to finding a real purpose for a monitor in my home office that’s been idle for a long time. I put together a quick hack to display the round trip time and packet loss to some of the devices in my home. It is using ICMP, is multi-threaded (as is nearly everything I’ve written in C++ in the last 20 years), and I’m using qcustomplot for display.
I’m calling this ‘qmcping’. I run this on an ancient 1920×1200 display in my home office, next to the qmcrover display. It runs fine on a Raspberry Pi 4, but I’m running in on my Threadripper workstation since that’s the machine connected to this monitor. I only use the workstation via remote access, so I run ‘qmcping’ full screen via a direct frame buffer (no X11 or Wayland). It runs 7×24.
The statistical boxes show the minimum RTT, 25th percentile RTT, median RTT, 75th percentile RTT and 95th percentile RTT for the last 100 echo requests. The red bars show packet loss for the last 100 echo requests. At a glance I can see if things are fairly normal on my home network.
I also have a curses version called ‘mcping’ that I can run in a terminal. It looks like below.
To some extent there is sort of some humor in the fact that I didn’t do this a long time ago. In the early 1990’s, I was the author of an ICMP monitor for a large network service provider, with a list of targets in the 10s of thousands (eventually more than 100,000). It was written in C, but not all that much different. This isn’t difficult code to write.
What has changed? Well, I don’t trust the Internet and haven’t for a long time. The late 1980’s and early 1990’s were a naive time for TCP/IP. That time has passed. So today, my ICMP monitor puts a cryptographically strong random 32-byte sequence in each echo request. When I receive an echo reply, I verify that this sequence is one I recently sent to the destination. This helps prevent someone from spoofing an ICMP echo reply.
Below is a picture of the front panel of the 3U UPS I’ve been using for my home office computers since about 1996. The main part of the panel has been repainted twice, but the ‘dwm’ (my initials) was done with a Sharpie when I bought the UPS. At the time, this was just used to distinguish it from my wife’s UPS in the same rack.
It lacks modern communication (it only has an oddly-pinned DB9 connector for communication). This is a drawback that will eventually trigger a replacement. However, I like the 3U form factor, since it makes the thermals more reasonable than a 2U unit without being loud. A single 90mm fan is in the rear, and I don’t think I’ve ever heard it since it’s normally in a rack under my desks. It’s also just been super reliable. Until recently…
Due to the lack of good diagnostic communication, the LEDs on the front panel have to be interpreted using the manual (I have a PDF copy). For the last couple of months, once in a while it would show one of two diagnostics after a power blip. One indicating low battery, one indicating ‘main relay failure’. If I cycled it off and on, the issue would sometimes toggle, sometimes repeat, and usually go away after I reduced the load.
Figuring it was worth a shot, I bought new batteries before digging in. Once I had the old batteries out, sure enough they were completely dead. As in 0V across the series (should be 48V). Hmm, they’re brand-name that I’ve used many times for replacement, that usually last 3.5 to 5 years. These were less than 2 years old.
I taped the new batteries together as usual to make a pack, then installed them. I then powered the UPS and heard arcing inside. Oh no! I unplugged it from the mains.
I removed the UPS from the rack and removed the top. Nothing appeared to be cooked, and no detectable scent of magic smoke. So I turned off the lights in the room, plugged it back into the mains and turned it on. During its self-test… arcing at the connection to the negative end of the series of batteries.
The issue was a loose fast-on connector. The female side had opened up over the years, presumably from the many battery swaps this unit has seen. I squished it with some Knipex pliers to make it tight again and reinstalled. I reran my testing, with no arcing and no overheating when running a 75% load (using a convenient multi-setting portable electric heater I find handy for such things) on and off battery. I didn’t leave it on battery for long since I don’t want to drain the new batteries, but I think it’s good to go.
Here’s a picture of the inside. Doesn’t look too bad for being nearly 30 years old!
I like the fact that the relays have clear housings. I was able to watch all of them operate, with no visible arcing or stickiness. One of my fears was that one of them was welded or intermittently sticking from contact material transfer, which would’ve required removing the main board, finding suitable replacement relays, and a decent amount of desoldering and soldering work.
I suspect this might be the last time I replace the batteries in this unit. I like the Eaton 5P UPS units I have elsewhere, especially since they have USB connections that work with NUT (Network UPS Tools). Replacing this old UPS with a 5P1500RT would not be a bad thing, and it would free up space to put a 1U Raspberry Pi rack in my office cabinet like the one I have in one of the basement racks. It would also homogenize my UPSes, which would be convenient from a monitoring perspective.
Kind of funny that Best Power, the company that made my old UPS, was eventually bought by Eaton, who is my preferred UPS maker today. Best Power made great stuff, and I’ve been very happy with my Eaton UPSes. I bought several Best Power UPSes back in the day based on a recommendation from a coworker (David Bolen at ANS), but this is the only one I still use and it’s been in continuous 24-hour use for decades. There are advantages to the lack of things like a backlit LCD screen: longevity.
My October 1st goal was 1,500 miles for the season thus far. On September 19th, I hit 1504.6 miles on the season odometer on the e-bike at the end of a 16.5 mile ride.
On September 18th, I broke all of my season records with a 30.6 mile ride. Longest ride, most miles in a day, most calories in a ride, most calories in a day. My plan was 25.5 miles, but my plan was foiled by construction on Waldon Road. I chose a long detour instead of backtracking. 30.6 miles is far from impressive for a serious road or cross-country cyclist, but for me it’s a good marker. I completed it all in ECO 1 and burned 1,401 calories.
My September 11 weigh-in: 158.5 pounds. I was sick for a few days afterward and hence didn’t ride. But I finally cracked the 160 pound barrier.
My September 22 weigh-in: 157.4 pounds.
One interesting thing I’ve recently noticed: distances feel shorter, despite the fact that I’m not going faster. In fact I don’t really notice how long some of my rides are until I drive the same route. This seems counter-intuitive. I believe this is due to familiarity. I’ve become much more familiar with my surroundings on the bike than I’d have any hope of doing in an automobile. I think it’s this new familiarity that makes all of these places feel closer than they actually are.
I decided to do some basic arithmetic on my summer cycling. At the moment I don’t know how much energy I’ve used charging my e-bike. Next season I intend to track it. But for now…
As of September 10, I’ve cycled 1,401 miles this season. My vehicle’s fuel mileage is terrible, averaging 17 mpg. If I had driven those 1,401 miles, I would have used 82.4 gallons of gasoline. Burning a gallon of gasoline produces 8,887 grams of CO2. Hence 82.4 gallons produces 82.4 * 8,887 = 732,289 grams of CO2. That’s 732 kilograms, or 1,610 pounds. The volume at 25C at atmospheric pressure would be .732289 metric_tons * 556.2m3/metric_ton = 407.3m3.
The Washington Monument structure’s volume is 623.7m3. Hence in just 1,401 miles in my vehicle, I produce enough CO2 to fill 77.77% of the Washington Monument structure.
That’s not a mistake. We leave our carbon footprints in a whole lot of places, but our vehicles are not small contributors.
As of September 3rd, my e-bike odometer says 1,279.2 miles for this season. And according to my Apple Watch, I’ve burned 38,600 calories since June 24th (when I started using the Workout app).
My last weigh-in says I’m at 160.8 pounds, and the one a day before said 162.4 pounds. So I’m going to say I’ve lost about 17 pounds, give or take a couple of pounds (I didn’t take enough measurements pre-season, but I was at roughly 180 pounds). The first 10 pounds came off pretty quickly, but it’s getting tougher to lose more. As expected.
I’m still trying to get to 150 pounds, but it’s probably not realistic for this season. However, I’ve set a new mileage goal: 1,500 miles by October 1st. I think this will be more difficult than the summer miles, largely due to the fact that warmer cycling clothing makes rides more difficult. My warmer pants (which aren’t cycling pants) are quite a bit more restrictive of motion, and it’s noticeable as soon as I start pedaling. We’ll see how it goes. Of course I can always bump up the pedal assist level on the e-bike to compensate.
The number of miles is just a motivator; the real goal is burning calories, and enjoying the journey! But 1,500 miles for the summer season feels like a pretty good marker.
On Saturday’s ride on my e-bike, I suffered a rear tire puncture about 4.5 miles from home. The puncture was from a small piece of glass (that was still lodged in the tire when I stopped).
It was 84F and I was on paved roadside path, more than 10 miles into my ride, so I wasn’t thrilled about having to do a roadside repair. I was about 1/4 mile from where I planned to stop for cold hydration (local gas station / convenience store).
I always carry tools for flat repair on the e-bike. They’re in a Rockbros saddle-mounted bag. Inside is a multi-tool, a pair of tire levers, a small hand pump, a master link, and a new addition, the Park Tool GP-2C pre-glued patches. I previously carried the old school butyl patches and vulcanizing adhesive, but have never been thrilled with the idea of having to use them roadside, especially if I find the adhesive tube to have dried out.
Fixing a rear flat on this bike sucks, mostly because you can’t just flip it over. The display stands very proud of the top of the handlebars (dumb design), and in addition, the control pad and throttle also stand very proud of the handlebars. It’s also an 88 pound bike. So I removed my rack bag and used it as a cushion for the handlebars, which worked fine. I removed the rear wheel with the multi-tool, popped one bead of the fat tire, removed the valve stem cap, and then removed the tube. I then used the small pump to inflate the tube and find the puncture. It was about 1.5mm long, in a spot easy to patch. I sanded the area with the little piece of sandpaper included in the GP-2C kit, then applied one of the 6 patches. I slightly inflated the tube, reinstalled it on the rim, then reseated the tire. I then inflated the tire to a reasonable pressure (by feel), and reinstalled the wheel.
I made it home without any trouble, and two days later, the tire is still holding air. I have no idea how long this patch might last, but I suspect I’ll get another puncture flat before this patch fails. It adhered really well, is flexible, and fat tires are low pressure. The fat tires on my bike are also pretty thin and not very robust against punctures. I’m honestly surprised I made it this far into the season without a puncture, given that I ride a lot of roadside surfaces littered with crap thrown from vehicles. In this case, a piece of glass from a broken bottle.
Of course, I don’t consider any patch as a permanent fix. But I give the Peak Tool GP-2C a big thumbs up. The pack of 6 patches with sandpaper is TINY! I carry a 2-pack (so 12 patches total), which came in a tiny Ziploc bag (which presumably helps prevent the adhesive from drying out). For a puncture in an MTB tire, they will get you home, and probably much further. That’s if you’re not running tubeless, of course.
The reason I don’t run tubeless at the moment: I swap to studded tires in the winter, and that swap is much easier (and with no mess) with tubes.
I may eventually buy another set of wheels for this e-bike that would allow me to conveniently run tubeless: one wheelset with studded tires, one with spring/summer/fall tires.
Since I passed the original 1,000 mile goal a few weeks early, I moved the goal posts to 1,250 miles by September 1st. I got off to a good start, but eventually hit 3 straight days of rain where I didn’t ride (it was muddy). This put me behind my new goal.
On August 23rd, I rode 28.0 miles, split across 3 rides: 14.6 miles, 4.3 miles and 9.1 miles. 1,359 calories according to my Apple Watch. This put me back on track for the new mileage goal. It also happened to be a season record for miles in a day.
I have a 17+ mile route in the queue for August 24th, but I might need a recovery day or for the ride to be my weekly leisure ride (which is normally on Sunday).
It is possible that I’ll get to 1,500 miles by October 1st, which would be a nice entrance to less cycling-friendly weather here in Michigan. However, I expect weather to get in the way. I’ll honestly be happy with 1,400 miles by October 1st.
It turns out that I reached my 1,000 mile September 1st goal almost a month early. As of August 13, I’m at 1095.6 miles on the fat-tire e-bike and a dozen on my old Klein. So what now?
I’m just going to keep at it. I’ve lost about 14 pounds (now at 164 pounds), but I’d like to lose another 9 to 10 before winter. It looks like I’ll be around 1,300 miles by September 1. Keeping track is getting a little more scattered. I’m spending a bit of time on my old Klein and I don’t have an odometer on that bike. I don’t always remember to start a workout on my Apple Watch, and sometimes my sleeve or glove accidentally pauses it. I actually haven’t figured out what’s causing my Workout to be paused mid-ride; it’s not consistent nor frequent, but it happens while I’m riding, including when I’m at 15 to 20 mph for a long stretch (so it doesn’t seem to be an automatic thing).
I’m going to continue to keep my ride data in the same file until September 1. It’ll give me a reasonably sized dataset to use for goal-setting next season.
The cycling season doesn’t end here on September 1. I should be able to ride into mid-October without changing much except the clothing and shoes I need to have at-the-ready. From mid-October until May, things become unpredictable (and sometimes unrideable even with studded snow tires) in Michigan.
For this week, I’ve reduced my ride length a little bit due to some knee aches (old injury). Nothing major, I’m just going down to around 9 to 10 miles.
A mural on the Dequindre Cut, across from the Freightyard. That’s me in the lower right, for scale.
So nice that the Detroit Riverfront Conservancy has put some money and effort into a bit of infrastructure for pedestrians and cyclists. The Dequindre Cut, while short (Mack to the river front), is a perfect example of “If you build it, they will come.”. Two opposing bike lanes and a wide pedestrian lane, paved. Commissioned murals on the underpasses. No automobiles.
The River Walk deserves the praise it gets. While I wouldn’t necessarily advise cycling it near Hart Plaza late afternoon on the weekend (it gets busy), the east end is less busy and the whole thing was easy to navigate around noon on Saturday.
We started near Hart Plaza. Here’s a shot of The Spirit of Detroit with the RenCen in the background.
And us fools.
We cycled to the south/west end of the River Walk first. We then turned around and rode the whole River Walk.
Here’s my friend Andy near Talon Centre around 1:30PM.
And a shot of Talon Centre from the River Walk.
Belle Isle isn’t what it was when I was a child 50 years ago, but it has improved. There were plenty of people enjoying food and drinks, from small parties to larger parties. Andy and I went there to eat the picnic lunch I packed. There’s no pass required if you’re on a bicycle or on foot, In fact as you come across the Grand Blvd bridge to the island, you’re routed right into the park instead of through the vehicle tollway. The sidewalk on the bridge is protected with concrete/steel barriers, and is very wide (no issues passing other cyclists or pedestrians).
Here’s a shot of Andy and I on the bridge to Belle Isle.
And a shot of the river from the same spot.
Once on Belle Isle, a view from the picnic table where we had lunch.
The park needs a new sign, but at least it’s still standing.
Here I am at the fountain.
In total we rode about 16 miles. And other than a short bit of downtown to/from the parking tower, we didn’t have to negotiate with ANY vehicles to ride all of the River Walk, all of Dequindre Cut and Belle Isle. We didn’t do it on Saturday, but of course you can ride all of Belle Isle on the bike lanes and paths. The Bike lanes are generous, and Belle Isle would be the place to ride at a higher pace.
This was an awesome cycling day. I didn’t get much exercise despite the 16 miles, but that wasn’t the point. This was a leisure ride and I had a blast!
I squeezed in a 9 mile workout ride in the evening, so I wound up with about 25 miles for the day. Not a season record, but not bad!