The Smell of Molten Projects in the Morning

Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.

Category: Home Ec

Things around the home & hearth

  • Translucent Soap Dishes

    Translucent Soap Dishes

    A SquidWrench meeting discussion about printing transparent objects prompted me to conjure a soap dish from the vasty digital deep:

    Shower Soap Dish - solid model
    Shower Soap Dish – solid model

    They’re all done in “natural” PETG with sufficient variations in speed, temperature, extrusion multiplier, and fill pattern to stock the shower & tub:

    Translucent soap dishes
    Translucent soap dishes

    The single-thread sidewalls came out reasonably translucent in all the variations, but the baseplate remained stubbornly white-ish, even at 20 mm/s and 250 °C with 100% infill. The seams where the extruder retracts and lifts to the next layer remain conspicuous, with a scarf joint forming the white slab in the left-rear dish.

    Quite a while ago, I’d considered making soap dishes with shattered-glass bottoms, but came to my senses. These have some key advantages:

    • Exactly the right size for narrow shower shelves
    • Light enough to not damage anything when it inevitably falls off
    • Reasonably unbreakable when that happens
    • Easily replaced

    They’re also test pieces for the whole transparency thing, so it’s all good.

    The OpenSCAD source code as a GitHub Gist:

    // Shower soap dish
    // Ed Nisley – KE4ZNU
    // 2026-01-13
    include <BOSL2/std.scad>
    /* [Hidden] */
    HoleWindage = 0.2;
    Protrusion = 0.1;
    NumSides = 3*3*4;
    $fn=NumSides;
    ID = 0;
    OD = 1;
    LENGTH = 2;
    WallThick = 0.6;
    BaseThick = 2.0;
    //DishOA = [80.0,40.0,20.0]; // standing used Dove
    DishOA = [90.0,50.0,30.0]; // standing Dove
    //DishOA = [100.0,65.0,30.0]; // half-bar
    DishTaper = [10.0,10.0];
    CornerRadius = 15.0;
    DrainOA = [10.0,DishOA.y,3.0];
    DrainOC = DishOA.x/3;
    //———-
    // Build it
    difference() {
    union() {
    linear_extrude(BaseThick)
    rect([DishOA.x,DishOA.y] – DishTaper,rounding=CornerRadius);
    rect_tube(DishOA.z,wall=WallThick,
    size1=[DishOA.x,DishOA.y] – DishTaper,size2=[DishOA.x,DishOA.y],
    rounding=CornerRadius,anchor=BOTTOM);
    }
    for (j=[-1,1])
    right(j*DrainOC/2)
    up(BaseThick)
    cuboid(DrainOA,rounding=1.0,anchor=BOTTOM+BACK);
    }
  • Delta 17 Series Temperature Knob Removal

    Delta 17 Series Temperature Knob Removal

    As a reminder for the next time in this rodeo, the latches holding the temperature adjustment knob on the Delta 17 Series dual-handle bath / shower faucet look like this:

    Delta bath faucet cap latches
    Delta bath faucet cap latches

    I am unable to apply enough force to the smooth edge of the knob opposite the handle to un-latch it, so I jammed a small prydriver into the gap and twisted enough to pop the latch, at the obvious risk of scarring the chrome plating.

    A better approach would involve a plastic prydriver intended for consumer electronics case cracking.

    For the record:

    • Unlike the other bath faucets, this one has shutoff valves inside the wall
    • The replacement cartridge is RP46463
    • A dab of silicone grease on the rotating valve surface in the back improves its performance

    Ideally, I won’t need any of that information again.

  • Wind Pants Zipper Tab Repair

    Wind Pants Zipper Tab Repair

    Unbelievably, the ankle zipper tab broke off in my hand:

    Wind Pants Zipper Tab - broken
    Wind Pants Zipper Tab – broken

    It’s one of those zippers where the tab releases a lock preventing the zipper from coming unzipped. Mary noped out of removing and replacing the entire zipper.

    Trimming a snippet of aluminum miniblind from the Small Box o’ Flat Stuff and two dots of JB Kwikweld epoxy seemed appropriate:

    Wind Pants Zipper Tab - clamping
    Wind Pants Zipper Tab – clamping

    Ugly, but serviceable:

    Wind Pants Zipper Tab - repaired
    Wind Pants Zipper Tab – repaired

    The stray epoxy scraped off under fingernail pressure over the next two days and the pants are ready for the next snowfall.

  • Dryer Vent Filter Snout: More Warping

    Dryer Vent Filter Snout: More Warping

    I have unfairly maligned the TPU snout, because the PETG snout failed the same way:

    Clothes Dryer Vent Filter Snout - warped PETG
    Clothes Dryer Vent Filter Snout – warped PETG

    Seen with the shock cord in place, it’s obvious that combining moderately high temperature with steady compression sufficed to bend the PETG enough to pop those tabs loose from the vent.

    So the OpenSCAD model now produces a stiffening ring to be laser-cut from acrylic:

    Clothes Dryer Vent Filter Snout - OpenSCAD stiffener
    Clothes Dryer Vent Filter Snout – OpenSCAD stiffener

    The whole snout builds as a single unit in the obvious orientation:

    Clothes Dryer Vent Filter Snout - V2 - slicer
    Clothes Dryer Vent Filter Snout – V2 – slicer

    Because the part of the snout with the tabs is 7 mm tall, I glued a 4 mm acrylic ring to a 3 mm ring, with both of them glued to the snout:

    Clothes Dryer Vent Filter Snout - acrylic gluing
    Clothes Dryer Vent Filter Snout – acrylic gluing

    That’s “natural” PETG, which I expected to be somewhat more transparent, but it’s definitely not a dealbreaker.

    Mary will sew up another cheesecloth filter and we’ll see what happens to this setup.

    As the saying goes, “Experience is what you get when you don’t get what you want.”

    Fortunately, living in the future makes it easy to iterate on the design & implementation until experience produces what should have been obvious at the start.

  • Garden Step2 Seat: Axle Repair

    Garden Step2 Seat: Axle Repair

    The cart in Mary’s Vassar Farm plot returned in need of repair:

    Garden Seat - fractured body
    Garden Seat – fractured body

    Those fractures near the end of the axle let the axle erode the side wall:

    Garden Seat - eroded body
    Garden Seat – eroded body

    This will obviously require some sort of reinforcement on the body holding the axle, but the first challenge involved getting the wheels off the axle:

    Garden Seat - axle cover
    Garden Seat – axle cover

    Some brute force revealed the hub covers snapped over an install-only locking fastener:

    Garden Seat - axle retaining clip
    Garden Seat – axle retaining clip

    More brute force cut those fasteners (a.k.a. star-lock washers) to get the wheels off the axles.

    While contemplating the situation, a box of 606 bearings (as used in the PolyDryer auto-rewind spindles) failed to scamper out of the way and produced a victim fitting perfectly on the 8 mm axle:

    Garden Seat - bearing idea
    Garden Seat – bearing idea

    I regard such happenstance as a message from the Universe showing I’m on the right track. The alert reader will note the axle should not rotate, but does sport scars showing it’s done some turning in the recent past, so the bearing may not be a completely Bad Idea™.

    Finding a Lexan snippet exactly as thick as the bearing suggested bolting a plate across the side of the body to support the bearing, like this:

    Garden Seat - reinforcing plate installed
    Garden Seat – reinforcing plate installed

    Some layout work in LightBurn produced a template to mark the body for hand-drilling the holes:

    Garden Seat - drill marking template
    Garden Seat – drill marking template

    In retrospect, that was a mistake. I should have:

    • Laser-cut an MDF sheet to make a drill jig
    • Drilled one hole and inserted a screw
    • Drilled the rest of the holes in exactly the right places

    Instead, three of the holes in that nice Lexan sheet ended up slightly egg-shaped to adjust for mis-drilled holes in the body.

    Lexan does not laser-cut well at all, so that sheet was drilled to suit after using the template to mark the holes:

    Garden Seat - plate drilling
    Garden Seat – plate drilling

    Then it got bandsawed / belt-sanded into shape.

    I squeezed 5 mm rivnuts into whatever fiber-reinforced plastic they used for the body, which worked better than I expected. They’re intended for sheet metal, so I set the tool for 5 mm compression and they seem secure. I hope using plenty of screws across a large plate will diffuse the stress on each screw.

    Then I threaded the axles and used acorn nuts:

    Garden Seat - repaired axle installed
    Garden Seat – repaired axle installed

    In this situation, I regard JB KwikWeld epoxy as “removable with some effort”, as opposed to the destruction required with those star-lock washers. High-strength Locktite might also be suitable, but I do not anticipate ever having to remove these again for any reason and do not want the nuts to fall off in the garden.

    The re-replaced seat conjured from a cafeteria tray continues to work fine, as do its 3D printed hinges.

    It’ll reside in the shed until Spring rolls around …

  • Sears Humidifier Bottle Cap Reinforcement

    Sears Humidifier Bottle Cap Reinforcement

    In the midst of the humidification season, I spotted this while refilling one of the ancient Sears Humidifier bottles:

    Humidifier bottle cap reinforcement - crack
    Humidifier bottle cap reinforcement – crack

    While it’s possible to buy replacement caps, this seemed more appropriate:

    Humidifier bottle cap reinforcement - installed
    Humidifier bottle cap reinforcement – installed

    It’s PETG-CF, of course:

    Bottle cap reinforcement - solid model
    Bottle cap reinforcement – solid model

    The shape is a ring with a simplified model of the cap removed from the middle:

    Bottle cap reinforcement - lid solid model
    Bottle cap reinforcement – lid solid model

    It fits snugly over the cap atop a thin layer of JB PlasticBonder that should hold it in place forevermore:

    Humidifier bottle cap reinforcement - bottom view
    Humidifier bottle cap reinforcement – bottom view

    The other side shows the crack over on the right:

    Humidifier bottle cap reinforcement - top view
    Humidifier bottle cap reinforcement – top view

    Close inspection showed a few smaller cracks, so that cap was likely an original.

    I made another ring for the other cap, only to find it was slightly larger with a black washer inside: apparently a previous owner had replaced one of the caps. The OpenSCAD program has measurements for both, not that you have either.

    The OpenSCAD source code as a GitHub Gist:

    // Humidifier bottle cap reinforcement
    // Ed Nisley – KE4ZNU
    // 2025-11-29
    include <BOSL2/std.scad>
    Layout = "Show"; // [Show,Build,Cap]
    /* [Hidden] */
    Protrusion = 0.1;
    //—–
    // Bottle cap/valve
    // Collects all the magic numbers in one place
    Left = false; // the caps are different, of course
    CapODs = Left ? [43.0,42.1] : [43.1,42.9]; // [0] = base of cap
    CapHeight = 10.0;
    Notch = [0.6,2.0,8.5 + Protrusion]; // Z + hack for slight angle
    NumRibs = 24;
    RibAngle = 90 – atan(CapHeight/((CapODs[0]-CapODs[1])/2));
    echo(RibAngle=RibAngle);
    $fn=2*NumRibs;
    module Cap() {
    difference() {
    cyl(CapHeight,d1=CapODs[1],d2=CapODs[0],anchor=BOTTOM);
    for (a=[0:NumRibs-1])
    zrot(a*360/NumRibs)
    right(CapODs[1]/2) down(Protrusion)
    yrot(RibAngle)
    cuboid(Notch,anchor=RIGHT+BOTTOM);
    }
    }
    //—–
    // Reinforcing ring
    RingThick = 3.0;
    module Ring() {
    render()
    difference() {
    tube(CapHeight,od=CapODs[0] + 2*RingThick,id=CapODs[1] – 2*Notch.x,anchor=BOTTOM);
    Cap();
    }
    }
    // Build things
    if (Layout == "Cap")
    Cap();
    if (Layout == "Build" || Layout == "Show")
    Ring();
  • Hens and Chicks Coasters

    Hens and Chicks Coasters

    Mary’s Hens and Chicks gardening group is having a White Elephant gift swap, where one can get rid of anything vaguely garden-related without repercussions, so I ran off a set of eponymous coasters for practice:

    Hens and Chicks Coasters - overview
    Hens and Chicks Coasters – overview

    They’re 3 mm laser plywood with English Chestnut stain and satin polyurethane sealant, with PSA cork on the underside. Even if (IMO) the stain came out too dark on some of them, they’re perfectly suited for the occasion.

    Coasters need a storage case:

    Hens and Chicks Coasters - case
    Hens and Chicks Coasters – case

    That’s 1.5 mm Trocraft Eco, which is AFAICT really nice chipboard, with a box layout from boxes.py.

    The image comes from The New Garden Encyclopedia, a fine source of classic images and outdated advice.