“Remember: Pain is just comedy leaving the body.”

— Shamus on Skyrim's Thieves Guild questline

Upcycling versus epicycling


大巻き取り棒

Next weekend there will be a Zoom gathering for folks who bought the baby takadai, to share tips and show off their braids. I’ve only made three braids so far, because I got caught up in epicycles of projects on how to improve it, including of course the full tinkertoy-takadai project.

So I decided to just strip off the tape, glue it together firmly, and start braiding with the new koma I made two weeks ago. Then I found myself staring at an empty filament spool…

Okay, now I’ve got a firmly-glued frame with an extended take-up spool, so I can make braids an inch wider than before, and approximately 90 feet long!

(and, yes, I could have printed a more practical spool at the same time I made the stand, but this one will be a lot more amusing to show off on Saturday…)

Black Ducks Matter

I know, I know, why wasn’t this the first thing I made on the 3D printer? Because I didn’t stumble across the model until yesterday, of course.

I need to try it again at higher resolution, in a more appropriate filament color. Or else buy new mini paints; the old ones are all dried up now.

Minkowski means never having to say your CPU is too fast

After I finished printing the new filament-spool makitori-bō, I grabbed something simple to try, namely a strain-reducer for masks. It included OpenSCAD source for precise sizing, so I opened it up. And waited. A lot. As I watched, the 38-line file chewed up more and more of my CPU and memory without even displaying a cheap preview.

Because for no good reason I can see, he implemented the shape with minkowski(). I left it running for a few minutes, and the only change when I got back was that it had passed 2GB of in-use memory with nothing to show for it.

Dear Apple,

When you’re through figuring out why your new releasebeta OS is bricking customer laptops, could you maybe explain how the brand new Time Machine full backup I made on my NAS “does not support the required capabilities” for an incremental backup. I ask because after the last Catalina security update, my USB Time Machine backup drive won’t even mount successfully…

Always scratch a monkey mount


I spent three hours this morning petting a cat. No regrets.

(Porch Cat destructively ordered breakfast early, and since it was cold and foggy out, I sat down on the stairs and petted him for a few minutes before completing the trip to the front porch and loading him up with dry food and meat sticks. Twenty minutes later, he was scratching on the back door again, and the leftover food out front said he wasn’t still hungry, so I sat on the stairs to pet him for a while. He promptly fell asleep, so I carried him over to the couch and let him nap on my chest until he wanted out. Which was 2.5 hours later. Some people would say I have a cat; I can’t understand why)

(there’s very little AsoIku fan-art on Pixiv, and even less of the minor characters; this was the only recognizable Antonia I found)

“Well, fuck me silly, that worked the first time.”

While designing a fully-parametric set of connectors for my tinkertoy-takadai, I decided to add screw/nail/pin holes and angled supports. The supports are simple right triangles that were easily implemented with a series of if/else statements, but trying to reuse that code to create holes on any face that didn’t have a support was lumpy spaghetti with no sauce.

So I tore it out completely and wrote a little matrix:

pipes = [ up, down, left, right, near, far ];
all_faces = [
  [ 0, 0, 1, 1, 1, 1, V_UP,    ORIENT_Z ],
  [ 0, 0, 1, 1, 1, 1, V_DOWN,  ORIENT_ZNEG ],
  [ 1, 1, 0, 0, 1, 1, V_LEFT,  ORIENT_XNEG ],
  [ 1, 1, 0, 0, 1, 1, V_RIGHT, ORIENT_X ],
  [ 1, 1, 1, 1, 0, 0, V_NEAR,  ORIENT_YNEG ],
  [ 1, 1, 1, 1, 0, 0, V_FAR,   ORIENT_Y ]
];

A dual loop from 0-5 tests each side of the central cube for the presence of a pipe, and if it doesn’t have one, rotates to it and makes a hole in the wall. If it does have one, it checks each adjacent side. If that side doesn’t have a pipe, it translates into the pipe, rotates to face that side, and makes a hole in the wall. Yes, I’m punching holes in faces.

The new code worked, first time. And now I can reuse it to create both the supports and the actual pipes, eliminating about 80% of the original code.

Burning Bridges

I finally got curious to see just how large an unsupported span the Dremel could bridge without me having to get fiddly with temperatures and print speeds. With PLA, the answer seems to be “at least two inches, so stop wasting plastic on supports”:

(via)

Getting behind on games

I immediately recognized this as Sucrose. Genshin Impact really builds up your skills…

RoboMac


"I work for Tim Cook! Tim Cook!"

"He's the number one guy at OCSP. OCSP runs the Macs. You're a... Mac!"

"Yes, I am a Mac." (disconnects from Internet)

Unconscious Minecraft


Microsoft’s 2020 “Hour Of Code” considered harmful. By anyone sane:

…the accompanying Educator Guide suggests opening the 45-minute coding lesson (using Blocks or Python) with a 10-minute discussion of unconscious and conscious bias, including “prejudice based on race, ethnicity, age, gender, gender identity, physical ability, religion, and body weight.”

So, 45 minutes isn’t an “hour”, and 10 of those are wasted on deranged Leftist pap. Why not just call it “35 Minutes Of Instantly-Forgotten Pre-Digested Code Templates”? The teachers already have scripts for the propaganda, and will eagerly spend more than 10 minutes on it.

Natural Gaslighting is a renewable resource


Wait, I think I missed a space in there…

Good advice, Hillary!

“​…should not concede under any circumstances because I think this is going to drag out, and eventually I do believe he will win if we don’t give an inch, and if we are as focused and relentless as the other side is”

Oh, wait, you meant the other guy.

“For everything else, there’s MasterCard”

I Speak Gcode To My Dremel

#!/usr/bin/env bash
#
# Send a print job to a network-connected Dremel 3D45 printer.
# Or with no arguments, report its current status and
# remaining print time.
#
# dependencies: curl, jq

IPADDR="192.168.187.150"

COMMAND="$IPADDR/command"
UPLOAD="$IPADDR/print_file_uploads"

if [ -z "$1" ]; then
  # just report printer status and exit
  curl -s -d GETPRINTERSTATUS $COMMAND |
    jq -r '[.progress,.remaining,.status,.jobname]|@csv' | tr -d '"' |
    awk -F, '{
      s = $2;
      h = int(s/3600);
      s -= h * 3600;
      m = int(s/60);
      s -= m * 60;
      printf("%.1f%% %2d:%02d:%02d %-8s %s\n", $1, h, m, s, $3, $4)
    }'
  exit 0
fi

file="$1"
if [ ! -f "$file" ]; then
  echo "$0: file '$file' not found"
  exit 1
fi

status=$(curl -s -d GETPRINTERSTATUS $COMMAND | jq -r .status)
if [ "$status" != "ready" ]; then
  echo "Printer $IPADDR not ready, status '$status'"
  exit 1
fi
echo "Printer ready"

message=$(curl -s -F "print_file=@$file" $UPLOAD | jq -r .message)
if [ "$message" != "success" ]; then
  echo "Upload of $file failed, message '$message'"
  exit 1
fi
echo "$file uploaded"

message=$(curl -s -d "PRINT=$(basename $file)" $COMMAND | jq -r .message)
if [ "$message" != "success" ]; then
  echo "Unable to print $file, message '$message'"
  exit 1
fi
echo "$file printing"

exit 0

By the way, I printed a full-sized ABLE corner connector, just to have a model to work with for designing smaller connectors in OpenSCAD. It’s a really well-thought-out system, but the fundamental problem is that making his sample table would require five days of continuous printing and more than an entire spool of filament. Ugly metal connectors at Home Depot are faster, cheaper, sturdier, and paintable.

For the tinkertoy-takadai, I’ve decided to simplify and just use 3D-printed T connectors so I’ve got wood against wood, with the plastic keeping things aligned. I can actually just replace the pins on top of my monorail koma design with an open cube to form the T; I know this prints quickly and cheaply (although I’ll do these at 100% infill for strength).

While those are printing, I’m going to lay out the arms on the floor to set the width, calculate the minimum required height from that, and the rest of the numbers fall out of the design I did three years ago. If I’m ambitious on Saturday, I could have it ready for a test braid.

“We’re gonna need a Bigger Bird”

Music to hashtag by...


Dear Apple,

Why did you create a Music.app playlist named “####!####”, containing all of my songs?

Dear Benny Hill,

I apologize to your memory for visualizing Joe Biden careening across the country to the tune of Yakety Sax, chased by an ever-growing pack of Leftists who just figured out that they were taken for a ride.

Dev Branches Matter

I am not yet in charge of the in-house Github environment at work, which is good, because the upgraded version includes the change where the default branch in new projects is now “main” instead of “master”, which will ripple through everyone’s automation.

Hopefully Microsoft refactored their code to accommodate future changes to the language more quickly.

Philadelphia Freedom

“Oh, come on, the last time they caught someone stuffing ballot boxes in South Philly was all the way back in (checks notes) March, and it was only one elected official taking bribes from a former US Congressman on behalf of his clients. Move On, Trumptard, you’re paranoid!”

“Speed, Groove, speed is your salvation.”

When I started downloading the new 4GB Genshin Impact update on my iPad Mini, it looked like it was going to take a very, very long time. After ten minutes, it was at 0.3%. Then I suddenly noticed that I couldn’t surf the web on my Mac, and looked down to see the update coming in at 15 MB/s or higher. Done now!

Tried a free 10x gatcha pull on the new all-girl offering. Got ten duplicate weapons.

Let me explain:

  1. you need a total of five copies of a weapon to refine it to its highest quality.

  2. you get weapon drops constantly while adventuring.

  3. only one of my characters does not have a fully-refined weapon, and that one’s pretty darn rare.

  4. there is no point to keeping “extra” weapons around to swap onto your characters.

  5. ~90% of gatcha drops are weapons.

  6. I will never pay for a gatcha pull that is completely, utterly worthless.

  7. which means I will never pay for a gatcha pull.

  8. which kind of undermines their monetization scheme.

On the bright side, you can now mark specific weapons as “locked” so you don’t accidentally recycle them into upgrades while cleaning your inventory.

Note: it is canon that Fischl is simply bonkers. Her chūnibyō-induced delusions seem to tie into the main character’s backstory, but I don’t think they’ve explained where she got it all from.

It takes a village without a constable


Most of the whistleblowers, eyewitnesses, videos, and actual indictments alleging widespread election fraud do not point to a sinister secret cabal of mustache-twirling villains. They point to a bunch of little people, secure in the belief that when their side wins, there will be no consequences, even if they get caught.

Hopefully they’re wrong. That “social worker” who thought it was a great idea to vote 67 extra times in the names of her patients? Now facing 134 counts of election fraud. In Texas.

Was there also a larger, more organized fraud, the sort that results in thousands of late-arriving ballots with nothing on them but a vote for Biden? That allegation is before the courts, where it belongs. As are others.

Update

🎶 “All in all, it’s just another glitch in the Fall”…

MonoCloudFinger


Clown Fusion

One good reason not to use the free-for-makers Fusion 360 is that exporting your design to STL requires saving it as a cloud project and then rendering it in the cloud. Which takes several minutes even on simple models.

“The Cloud is Mother, the Cloud is Father.”

(and I’m not even designing in it, just using the customization options from someone else’s design, the ABLE System connectors, created by a user with no Thingiverse profile whose only video doesn’t show up as uploaded by the user who owns it, who doesn’t seem to have any other archive or discussion of his work, by anyone, anywhere…)

This, by the way, looks like a better solution for a tinkertoy takadai than the Jonction-P system I mentioned earlier, largely because that one is incompatible with my monorail design for koma. I’ll just have to redo it in OpenSCAD to scale it to different square-dowel sizes, and then add a few custom parts.

The key feature of both is that they print at an angle both for strength and to eliminate any bridging that would require supports.

🎶 Monorail, monorail, monorail 🎶

“It glides as softly as a cloud” on a half-inch square dowel, and required no trimming or sanding. Printed with PLA at 0.2mm layer height and 20% infill, it’s quite sturdy, even the half-pins at the end that are 1.65mm thick. I’d give it some light sanding before trying out a fiber like silk, but I mostly prefer yarn anyway.

A takadai built around these koma would be roughly 18x18 inches, and capable of pretty much any standard single or double-layer braid. It would be able to take full-size bobbins (no more crowded than a Braidershand extended takadai), although not necessarily five pounds of them per arm. 😁

Fingers, Pointing

I’m going to predict that if it is proven that even one state was illegitimately flipped from T to B, even by a series of completely innocent mistakes, The Narrative will immediately switch from

“Trump’s making it all up”

to

“Trump’s behind it all.”

The incantation “Reichstag Fire” will be invoked.

Amazon Time Travel

Hey, remember that thing I bought one of?

Let’s order another one…whu?

Fail

This did not go well. Now I know what the “build plate adhesion” checkbox is good for.

(Update: I started a simpler print job and watched it fail to lay down the first layer consistently, so I stripped all the glue off the bed, laid on two new layers, and went through the manual leveling process again. Looks a lot healthier now)

Unicorn Chaser, Fillyment Edition

To be clear, I’m not claiming she’s responsible for my filament snarl. I’d forgive her instantly…

“Need a clue, take a clue,
 got a clue, leave a clue”