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.

Author: Ed

  • Tax Season: 2026 Edition

    Tax Season: 2026 Edition

    Having recently filed our income taxes, this email came as a mild surprise:

    IRS Audit email
    IRS Audit email

    The From field seemed a bit sketchy, but, hey, maybe the IRS subcontracted their email vendor after having lost much of their staff in the name of efficiency.

    The attached PDF document seemed scant:

    IRS Audit document
    IRS Audit document

    Yeah, I’m definitely clicking that link …

  • Generator Cover Screw Knob

    Generator Cover Screw Knob

    The latches holding the side cover of the portable generator in place work well enough that I never tighten the cover screws, but sometimes one will vibrate itself into place and require less than one turn of a screwdriver to release. Given that I put a knob on the air filter screw, a pair of knobs on the side cover screws makes sense:

    Generator Cover Screw Knob - installed
    Generator Cover Screw Knob – installed

    Those are custom screws! The narrow neck keeps them captive in the cover, which is a Good Thing™.

    These knobs obviously descend from the air filter knob, with less knurling and a short shaft to clear the recess in the cover:

    Generator Cover Screw Knob - solid model
    Generator Cover Screw Knob – solid model

    Unlike the air filter knob, the double-sided tape gluing these to their screws isn’t continually compressed, so the knobs may eventually shake off. Should that happen, I’ll deploy epoxy.

    The OpenSCAD source code:

    // Generator cover screw knob
    // Ed Nisley - KE4ZNU
    // 2026-03-13
    
    include <BOSL2/std.scad>
    
    /* [Hidden] */
    
    // Screw head dome
    
    HeadHeight = 2.0;
    HeadOD = 10.8;
    
    DomeRadius = (HeadHeight^2 + (HeadOD^2)/4) / (2*HeadHeight);
    echo(DomeRadius=DomeRadius);
    
    KnobOD = 15.0;
    KnobLength = 10.0;
    
    ShaftOD = HeadOD;
    ShaftLength = 7.0;
    
    RimFudge = 0.3;   // ensures a printable edge
    
    // Build it
    
    difference() {
      cyl(h=KnobLength, r=KnobOD/2,anchor=BOTTOM,texture="trunc_pyramids",tex_size=[3.0,KnobLength/3]) position(TOP)
        cyl(ShaftLength,d=ShaftOD,anchor=BOTTOM);
      up(KnobLength + ShaftLength - HeadHeight + RimFudge)
        spheroid(r=DomeRadius,circum=true,style="icosa",anchor=BOTTOM);
    }
    
    
  • Wobbly Clothes Rack Repair

    Wobbly Clothes Rack Repair

    A clothes rack Mary intended use with some work-in-progress quilts seemed entirely too wobbly for the purpose, so I tried tightening its screws. This did not go well, as some of the threaded inserts sunk into the vertical bars spun freely and, with a bit of persuasion, pulled straight out of their sockets:

    Clothes rack screws - threaded insert penetrating oil
    Clothes rack screws – threaded insert penetrating oil

    The reddish fluid is Kroil penetrating oil I hoped would free the screws from the corrosion locking them into the inserts. After an overnight soak, they still required force majeure:

    Clothes rack screws - threaded insert in vise
    Clothes rack screws – threaded insert in vise

    The two inserts on the left came from the top of the rack and the other two from the bottom:

    Clothes rack screws - threaded insert corrosion
    Clothes rack screws – threaded insert corrosion

    Similar inserts have a hex drive recess and, because these are for 1/4-20 screws, I expected an inch size hex key. Nope, they want a hard metric 6 mm:

    Clothes rack screws - threaded insert reformed
    Clothes rack screws – threaded insert reformed

    I cleaned up the corroded inserts by the simple expedient of tapping them firmly onto the 6 mm wrench held in the vise:

    Clothes rack screws - threaded insert hex reforming
    Clothes rack screws – threaded insert hex reforming

    The crud around the bottom fell out of previous contestants during their reformation.

    I considered epoxying the inserts in place, but settled for tucking a thick paper shim into each hole:

    Clothes rack screws - threaded insert shim
    Clothes rack screws – threaded insert shim

    They’re entirely snug right now and, should they work loose, I’ll coat the hole with epoxy, roll up another shim, screw the insert in place, await curing, then declare victory and hope nobody must ever remove them.

    The 1/4-20 screws in the top member sit deep in recesses that surely had decorative wood plugs when the rack left the factory. Alas, they’re long gone, which may have let water / moisture corrode the screws + inserts . I’m not much good for “decorative” items, so this must suffice:

    Clothes Rack Screw Covers - solid model
    Clothes Rack Screw Covers – solid model

    A snippet of double-sided tape on one side of the hole keeps them in place:

    Clothes rack screws - cover installed
    Clothes rack screws – cover installed

    They look better in person …

    The trivial OpenSCAD source code:

    // Clothes rack screw cover
    // Ed Nisley - KE4ZNU
    // 2026-03-13
    
    include <BOSL2/std.scad>
    
    /* [Hidden] */
    
    NumSides = 4*3*3*4;
    $fn=NumSides;
    
    //----------
    // Build it
    //  … with magic numbers from the rack
    
    cyl(3.0,d=16.7,chamfer1=1.0,anchor=BOTTOM) position(TOP)
      cyl(6.0,d=12.9,chamfer2=1.0,anchor=BOTTOM);
    
    
    
  • Clover Mini-Iron Holder: Revised

    Clover Mini-Iron Holder: Revised

    The 3D printed Clover Mini-Iron holder served well over the last decade (!), even after one of Mary’s buddies misplaced the iron during a quilting bee:

    Clover MCI-900 Mini Iron holder - melted
    Clover MCI-900 Mini Iron holder – melted

    She asked for a new holder that put the iron at a higher angle for easier gripping, which required only slight tinkering to boot the OpenSCAD code into the current decade:

    Clover MCI-900 Mini Iron holder - higher angle
    Clover MCI-900 Mini Iron holder – higher angle

    The letters stand one layer proud of the surface just to see what that looked like. I think it’s a nice touch.

    The alert reader will note the cord end isn’t quite snugged into its recess. In normal use, the cord hangs over the edge of the sewing table and pulls the iron into place.

    I embiggened the base to fit an aluminum plate from the stockpile, because that same cord tends to pull the holder around on the table. The plate puts enough weight on the silicone rubber feet to hold it firmly in place.

    A layer of good double-stick tape strips bonds the aluminum plate to the PETG iron holder, after I once again discovered that craft adhesive sheets do not bond to PETG.

  • Laser-Cut Egg Carton Sprouter

    Laser-Cut Egg Carton Sprouter

    Mary has been using Styrofoam egg cartons to sprout seeds for this year’s garden veggies:

    Egg carton sprouter - hand cut
    Egg carton sprouter – hand cut

    I looked at those artisanal holes and offered to make sprouters with precisely calibrated laser-cut holes.

    After the laughter died down, this happened:

    Egg carton sprouter - lid detail
    Egg carton sprouter – lid detail

    Each egg compartment has a drainage hole in the bottom:

    Egg carton sprouter - on platform
    Egg carton sprouter – on platform

    The LightBurn layout has four shapes in three virtual arrays:

    • Drain holes: 3 mm circle, 6×3 array
    • Top vents: 25×15 mm oval, 2×1 array
    • Side vents: concentric 3×4 & 2×3 mm ovals, 2×4 array

    Which looks like this:

    Egg Carton Sprouter - LightBurn layout
    Egg Carton Sprouter – LightBurn layout

    Because this isn’t a high-precision operation, I align the patterns to the carton using the camera:

    Egg Carton Sprouter - LightBurn camera alignment
    Egg Carton Sprouter – LightBurn camera alignment

    The two halves of the unfolded carton aren’t the same height, which means the top and bottom patterns have different focus levels and must be cut in two operations.

    The laughter made it totally worthwhile.

  • Monitor Arm Tilt Adjustment: Bad Part Repair

    Monitor Arm Tilt Adjustment: Bad Part Repair

    The tilt (it’s really “pitch”, but I can’t make a case for being that pedantic) adjustment on a recently arrived monitor stand / arm was nonfunctional, because the metal clamp had been bent about a millimeter too narrow to fit the plastic core. This is how it should look:

    Monitor tilt adjustment - installed
    Monitor tilt adjustment – installed

    As delivered, the plastic core was 32-ish mm wide and the gap at the base of the metal clamp was 31 mm, so the clamp arms stuck out at an angle on both ends of the core .

    Because the cap screw bottomed out on the threads in the far side of the clamp, it couldn’t be tightened enough to force the clamp arms against the core.

    Well, if the core is a millimeter too large for the clamp, shortening it should solve the problem; I can always shorten the screw if it comes to that.

    Quick! To the mini-lathe:

    Monitor tilt adjustment - lathe setup
    Monitor tilt adjustment – lathe setup

    Shaving half a millimeter from each side:

    Monitor tilt adjustment - shaved
    Monitor tilt adjustment – shaved

    Twirling a deburring bit in each hole got rid of the swarf.

    Rather than trimming the cap screw, a pair of fender washers keep it from bottoming out. With the core fitting into the clamp, the arms grip the core firmly on both sides with plenty of friction:

    Monitor tilt adjustment - tweaked
    Monitor tilt adjustment – tweaked

    I’ve bought this brand of arm before and the most recent pair have definitely been cheapnified from earlier ones. Because only one had a bad tilt clamp, the OEM may be in the middle of a changeover and shipped it with mismatched parts.

    I wonder how many stands / arms get returned because they just don’t work?

  • Alumina Desiccant: Regeneration Timeline

    Alumina Desiccant: Regeneration Timeline

    Having accumulated a suspiciously precise 700 g of activated alumina desiccant from the PolyDryer filament boxes, I poured it into the same cast-iron pan on the induction cooktop:

    Alumina regeneration - induction cooktop
    Alumina regeneration – induction cooktop

    Based on the results from last time, I set the temperature to the cooktop’s maximum 460 °F and, bother fiddling with condensing the moisture on a lid, and let it cook.

    Weighing the beads (about) once an hour:

    • Start: 700 g
    • 1 hr: 678 g
    • 2 hr: 666 g
    • 3 hr: 661 g

    The 39 g water loss is 5.6% of the wet weight and 5.9% of the dry weight, which is roughly the amount absorbed by both silica gel and alumina after a month or so in the filament boxes.

    During those hours the surface temperature rose from 73 F to 190 °F, although the exact number depends on exactly where the IR thermometer was staring. Stirring the beads to get an average temperature might be more convincing, but not by much.

    Exactly how dry the beads become after three hours remains unknown, but the temperature increase suggests most of the water has gone elsewhere.

    Cooling the beads in a covered bowl and pouring them into a jug produced a total weight of 767 g, which settled at 770 g over the course of two days; the jug seems reasonably vapor-tight.

    Alumina beads seem much less prone to damage by overheating than silica gel beads and have similar performance in the boxes, which makes them a strong contender for the next round.