One day, long ago, this tree grew in a certain bedroom:

And then a flower appeared in the laundry room:

Much to our delight, she asked for forgiveness, not permission … which was, of course, granted immediately.
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.
Things around the home & hearth
The stops aligning the top two drawers of an old desk vanished, so I got the job of replacing them. They’re hammered into the wood frame:

And stand up just enough to engage the back of the drawer face:

Back in the Basement Laboratory Shop Wing, I harvested steel strips from a defunct PC case, rubber-hammered them flat, sharpened a cold chisel (un-hardened, so it always needs sharpening), and got to work:

The pointy sides should have sharp edges, which you get for free with a chisel. You also get a bench full of little steel slivers perfectly suited for embedding in human flesh. Wearing eye protection is more than just a good idea, too.
Introducing what will become the visible edges to Mr Disk Sander makes them marginally less hazardous:

A slightly fuzzy picture of a test fit shows the stops should suffice:

Which they did:

Nobody will ever notice the blob of hot melt glue behind each one:

Done!
A House Finch suffering from Finch Eye Disease prompted me to sterilize our feeder, which meant providing a temporary feeder to keep the birds flying. Having an abundance of lids from six gallon plastic cans / buckets, this made sense:

Which required an adapter betwixt pole and lid:

Which requires a bit of solid modeling:

The lids have a central boss, presumably for stiffening, so the model includes a suitable recess:

As usual, automatically generated support fills the entire recess, so I designed a minimal support structure into the model and cracked it out with very little effort:

The tangle off to the right comes from a bridge layer with a hole in the middle, which never works well even with support:

Didn’t bother the birds in the least, though, so it’s all good.
I loves me my 3D printer …
The OpenSCAD source code as a GitHub Gist:
| // Adapter from steel pole to 5 gallon plastic can lid | |
| // Turns the lid into a improvised platform feeder | |
| // Ed Nisley – KE4ZNU – 2018-11 | |
| Layout = "Build"; // Show Build | |
| ThreadThick = 0.25; | |
| ThreadWidth = 0.40; | |
| HoleWindage = 0.2; | |
| function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit); | |
| Protrusion = 0.1; // make holes end cleanly | |
| // Sizes | |
| ID = 0; | |
| OD = 1; | |
| LENGTH = 2; | |
| Wall = 10; // minimum thickness or width for anything | |
| Boss = [15,50,9]; // central boss on lie | |
| Flange = [50,110,Boss[LENGTH] + Wall]; | |
| echo(Boss); | |
| echo(Flange); | |
| Pole = [(23.5 + 4*HoleWindage),26,45]; // small end of steel pole | |
| Screw = [5.0,8.0,25.0]; // 5 mm or 10-32 | |
| ScrewOC = 80; // lid mounting screws | |
| NumScrews = 3; | |
| NumSides = NumScrews*2*4; | |
| $fn = NumSides; | |
| //———————- | |
| // Useful routines | |
| module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes | |
| Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2); | |
| FixDia = Dia / cos(180/Sides); | |
| cylinder(r=(FixDia + HoleWindage)/2,h=Height,$fn=Sides); | |
| } | |
| //———————- | |
| // Build it | |
| module Bracket() { | |
| difference() { | |
| union() { | |
| rotate(180/(NumSides/2)) { | |
| cylinder(d=Flange[OD],h=Flange[LENGTH],$fn=NumSides/2); // fewer sides is OK | |
| cylinder(d=Pole[OD] + 2*Wall,h=Pole[LENGTH] + Flange[LENGTH],$fn=NumSides/2); | |
| } | |
| } | |
| translate([0,0,-Protrusion]) | |
| rotate(180/NumSides) | |
| cylinder(d=Boss[OD],h=Boss[LENGTH] + Protrusion,$fn=NumSides); | |
| translate([0,0,-Protrusion]) | |
| rotate(180/NumSides) | |
| cylinder(d=Pole[ID],h=2*(Pole[LENGTH] + Flange[LENGTH]),$fn=NumSides); | |
| for (i=[0:NumScrews-1]) | |
| rotate(i*(360/NumScrews)) | |
| translate([ScrewOC/2,0,-Protrusion]) | |
| PolyCyl(Screw[ID],2*Flange[LENGTH],6); | |
| } | |
| } | |
| module Support() { | |
| NumRibs = NumSides/2; | |
| Rib = [0.95*(Boss[OD] – Pole[ID])/2,2*ThreadWidth,Boss[LENGTH] – ThreadThick]; | |
| color("Yellow") { | |
| for (i=[0:NumRibs-1]) { | |
| a = i*360/NumRibs; | |
| rotate(a) | |
| translate([Pole[ID]/2 + Rib.x/2,0,Rib.z/2]) | |
| cube(Rib,center=true); | |
| } | |
| rotate(180/NumSides) | |
| difference() { | |
| cylinder(d=Pole[ID] + 10*ThreadWidth,h=1*ThreadThick,$fn=NumSides); | |
| translate([0,0,-Protrusion]) | |
| cylinder(d=Pole[ID],h=Rib.z + 2*Protrusion,$fn=NumSides); | |
| } | |
| } | |
| } | |
| if (Layout == "Show") | |
| Bracket(); | |
| if (Layout == "Build") { | |
| Bracket(); | |
| Support(); | |
| } |
A sterling knife followed me home after a Thanksgiving gathering:

The original cement, dating back to the middle of the last century, turned into friable dust around the blade tang:

I cleaned it out as best I could, buttered JB Quik epoxy around the tang and into the socket, joined the two, and let it cure in the natural position:

The rest of the knives in the set may need similar attention, but I’m not looking for trouble.
As part of converting the halogen desk lamp to LEDs, I replaced the hulking iron transformer with a flatter counterweight:

Under normal circumstances, you’d use something like steel or lead sheets, but Tiny Bandsaw™ can’t cut any appreciable thickness of steel and I gave away my entire lead stockpile, so I sawed disks from a pile of non-stick pancake griddles and drilled suitable mounting holes:

Another disk (from a formal aluminum sheet!) goes into the lamp head, with a trio of 3W COB LEDs epoxied in place:

The other side of the disk sports a heatsink harvested from a PC, also epoxied in place:

Realizing the head required only a little filing to accommodate the heatsink sealed both their fates.
A test firing showed the heatsink needed more airflow, which didn’t come as much of a surprise, so I milled slots in the lamp head:

Deburring the holes, blackening the sides with a Sharpie, and tucking a bit of black window screen behind the opening made the vents look entirely professional.
The small dome in the base originally cleared the transformer and now holds the entire 10 W LED driver, along with all the wiring, atop the counterweight sheets:

A cork pad covers the base for a bit of non-skid action:

I couldn’t convince myself filling in those sectors would improve anything, so I didn’t.
And then It Just Worked:

All without a trace of solid modeling or G-Code …
Our Compact Edition of the OED doesn’t get much use these days, but Mary needed a magnifier for a class on quilt judging and the OED has one that seemed just about right:

The magnifier comes in a removable box fitted neatly into the drawer, revealing a surprise underneath:

A detail view:

It’s a plastic ant from a bag in the Kiddie Surplus box my Shop Assistant grew up with and a pleasant reminder of long-ago days, carefully placed where only I’d ever see it.
Of course, it’s still there …
The ancient (Came With The House™) Electrolux canister vacuum cleaner long ago lost the plastic bushing around the opening passing its retractable cord, which I’d long sworn to replace. A recent trip around the Basement Laboratory paused near the recently relocated Box o’ Wire Loom & Braid, whereupon I snipped off a few inches of split loom and tucked it in place:

Looks and works better than before, anyhow.
The blue flap dangling off the back should latch over the exhaust port, but failed long ago when the latch tab eroded. I attempted a repair, which never worked quite right, and won’t get around to attempting another for quite a while.