Almost done with bedroom 1 remodel

This room was a lot of work. The first two pictures are how it looked the morning of May 27, 2025 after I reinstalled the freshly painted window sashes and the last piece of new white window jamb liner.

The next two pictures are from the evening after I moved an old rug into the room. This rug is too big for the room and not the colors I would choose for this room, but the rug was taking up space in the master bedroom (rolled up) for a long time and it was time to move it out of the way. It can live in this room for a while. The upside is that it’s a nice thick 100% wool rug that I’ve had for more than 25 years. It’s nice under foot, and was professionally cleaned before it was rolled up.

Without going into every little detail, but enough to explain why this room took so long to complete…

New ceiling box to allow a ceiling fan (installed from the attic). New 2-gang box to replace 1-gang box to allow separate smart controls (HomeKit compatible) for the ceiling fan and light. “Hey Siri, turn the ceiling fan to 50%”. New 14/3 wire from the switch box to the ceiling box to allow the new controls.

All new trim, including custom entablatures for the door, window and closet doors.

3-piece crown moulding. I had to move the cold air return opening down about 1.5″ to accommodate it. New Victorian style cold air return grill installed.

Primer and paint on ceiling, walls and trim.

Hickory hardwood floor to replace the dingy blue carpet. I primed the subfloor since there were some stains of unknown origin. Then Floor Muffler underlayment, then the hardwood. And yes, I did the closets, including new baseboard and moulding and new primer and paint after I removed the closet organizer structures (not easy).

New floor registers that I bought from Signature Hardware for this room many years ago but hadn’t installed them until now.

New window jamb liners; from gray (‘stone’) to white, so I could paint the window sashes and grills white.

Entrance door issues resolved. I swear the door was originally hung by an untrained monkey; it was so crooked that it cleared the stop moulding at the bottom on the latch side by almost 1/4″. I never closed the door, so I hadn’t noticed until I did the hallway trim work. I reshimmed the jambs at that time, but there was so little room to work (adjacent perpendicular walls on both sides of the door), I wound up with a snug door. Which was fine until I primed and painted and wound up with rubbing. I planed the hinge side of the door and recut the hinge mortises to correct for it, and moved the door stop moulding about 1/16″. It’s all good now, the door closes snugly but there’s no rubbing or squeaking.

The fastest, least expensive, reliable sacrificial table saw fence

I’ve seen a variety of sacrificial table saw fences for contractor table saws like my Bosch 4100. My main issue with all of them is that they either take too long to make or they cost too much. Or take up too much space on a saw that’s already limited in rip capacity.

An example of one that costs too much is any that involves Microjig Matchfit dovetail clamps. Today (March 18, 2025), they’re $45 for a pair. I love some of Microjig’s products, but $45 for a pair of clamps that’s just holding a sacrificial fence to my table saw fence is absurd. In general, my sacrificial fences stay in place until I need to replace them from wear or I need the special ones that are intentionally cut to accommodate blade-width edge cuts or using the dado set to cut rabbets. In other words, the clamping mechanism is semi-permanent; I am not loosening or tightening the clamps but once in a while. It’s also specific and fixed; it doesn’t need versatility. Finally, cutting dovetails takes way longer than other means. The cutting itself is quick, but I have to load the dovetail bit in the router, set its depth, clamp the work, etc.

An example of one that takes too long and uses too much space: parallel boards with space between for typical F or C clamps.

All that most of us want is a piece of scrap MDF held by fence clamps that only require one hole to be drilled per clamp. Fence clamps are less expensive than dovetail clamps; the Milescraft 7209 in a set of 4 is $23.99 today from Amazon. But there’s an even cheaper option if your fence isn’t too wide: Bessey TK-6 table clamps, which are $7.69 for a pair on Amazon as of right now. That’s what I’m using on my Bosch 4100. Drill a pair of 5/16″ holes in a piece of MDF and you’re ready to go.

Building a bench for my kitchen

I’ve been working on a bench for my kitchen. I have no mud room, and in fact the entrance from the garage dumps directly into the kitchen. There was originally no place to remove coat/boots/shoes/hat/gloves, and nowhere to store them. To get to the coat closet at the front door, you have to walk through the kitchen and family room. This is highly inconvenient.

Last month I finished two coat racks, one for the front entrance and one for the kitchen. Nothing special about them except the one by the front door is tall enough to hang my bicycle helmets without them banging on the wall. They’re solid oak, and hung on the wall with concealed French cleats. They both have a shelf above the hooks.

I created a small console table for the front foyer, mostly as a place to dump keys/wallet and to hold a wooden box on the bottom shelf for my cycling caps and cycling gloves which I use daily in season.

For the kitchen, I wanted a bench I could sit on when putting boots or shoes on or removing them. I also wanted it to be roughly dining chair seat height, so it can double as kitchen table seating when I have the extension inserts in the table (which will seat 10 but I only have 4 matching chairs and don’t really want more). And I also wanted a spot to stash my winter boots in the winter and my in-house shoes (Vans slip-ons). I have a 15″x20″ polypropylene boot tray I’d like it to accommodate.

I designed the bench in SketchUp, and I’m done with the main assembly part. The legs, stretchers, rails, top frame and cove moulding are all solid red oak, dyed with TransTint mahogany brown. The stiles are solid maple, with no dye or stain. The main horizontal surfaces are stone-look porcelain with a PEI IV rating, which are supported underneath by 3/4″ plywood (plus another 3/8″ of plywood in the case of the top piece). I like using porcelain for primary contact surfaces because it’s very durable, waterproof and man-made. It’s inexpensive versus real marble or granite, and rectified porcelain tiles tend to be very accurately sized perfect rectangles. And these days you can get them in almost any size you’d like. I have a wet tile saw (actually two, a typical sliding-tray saw and a handheld with a hose feed that I use for really big tiles, say 30″x60″ and bigger like I used for my desks). But in this case, I found 15″x30″ tiles on clearance at Menards that I like for this bench. And that was the right size to hold a typical boot tray on the bottom shelf.

The picture below is from final fitment. I hadn’t attached the top to the base yet, it’s just sitting on top of the base. The tiles aren’t adhered and grouted. And I haven’t completed the finish work (no polyurethane yet, just dewaxed shellac to prevent dye and glue migration). But everything fits perfectly, it sits flat on the floor (no rocking), and it’s rock solid which was important to me since I’ll bet sitting on it daily, dropping my backpack and groceries on it, etc.

The design doesn’t include a seat back, and that’s intentional. The bench can be repurposed as a coffee table.

Painting the foyer and first floor hallway

Lots of work here, mostly due to the need for a lot of wall patching. I’ve been living with very dinged up walls since I bought the house, all from the previous owners. As an example, here’s a short wall while I was patching and spot priming with Zinsser B-I-N.

After patching and priming, it looked like this:

I hadn’t intended to paint the ceiling, but I decided to patch a tiny drywall joint settling crack on the ceiling and two small holes near the master bedroom (not sure what was previously mounted there). I didn’t have a lot of ceiling area to paint, but it needed to be done first so I wouldn’t wind up with spatter on the walls. As of Thanksgiving, I had put 2 thin coats of Kilz Original primer on the walls and ceiling and the first coat of flat ceiling paint on the ceiling.

The color I’m using on the walls is a very light yellow/cream, Sherwin-Willams ‘Vanillin’ (SW 6371) in matte sheen.

As of December 3rd, the painting is done. I’ll clean up and remove the remaining masking tape and floor protection tomorrow.

Almost done refinishing stairwell to second floor

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.

New home network monitor using ICMP

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.

Very old UPS still ticking after minor repair

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.

October 1, 2024 cycling goal: finished early with late season push

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.

Carbon footprint arithmetic

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.

October 1, 2024 cycling goal: 1,500 miles

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.