"Imagine what we could do next. Four more years. Pause."

— Joe Biden, https://twitter.com/disclosetv/status/1783184198477508785

Kinky parts


Cool! No, wait…

I only check the catchall mailbox for my domain about once a month, because it’s almost entirely spam sent to randomly generated addresses. As I’ve mentioned a few times, a fair amount of it is in Japanese.

Checking it last night, it seems I’ve started getting weekly newsletters from a kinky church in Japan. Wait. Stop. I meant a church in Kinki, Japan. That’s not nearly as interesting.

I actually got one in Korean a few months ago, and online translators tell me it was one of those “pay up in bitcoin or we’ll release the webcam photos of you stroking it to nasty online porn” scams. Sent to a randomly-generated email address at my domain, so good luck with that one, boys.

I’ve never really understood those. Even if you hacked my computer’s webcam, you’d only see me from about mid-chest up. To get my dick into the picture, I’d have to stand up and risk keyboard damage. Yeah, try explaining that one at the Genius Bar.

Analysis: true

The vast majority of 3D-printable designs available online are parts and tools for making 3D printers. Still. I’ve only printed one of them, an Olsson torque wrench, because nozzles wear out, and I’d really hate to strip a thread changing one.

D&D minis and dungeon tiles are also available in quantity, but most look like crap unless you print at the highest resolution, which takes hours to days for each one. And many still require substantial post-processing. In addition to painting.

According to Schultz…

We see nothing. Nothing. Nothing.

And more nothing.

German Unicorn Chaser

That’s what she said

Hillary Clinton on the election:

“No, it doesn’t kill me because he knows he’s an illegitimate president. I believe he understands that the many varying tactics they used, from voter suppression and voter purging to hacking to the false stories – he knows that – there were just a bunch of different reasons why the election turned out like it did.”

Oh, wait, she means Trump, not Biden. I guess that was what gracefully conceding looked like four years ago.

Yeah, get back to me when you have data...


User: “Hey, my SQL queries are timing out on the replica!”

J: “Hmmm, that error says they’re so slow that the master is trying to clean up all the rows that have changed since it started running.”

U: “Can we try it on the primary?”

J: “No, because 1) Production, and 2) error is specific to replicas.”

U: (CCs Partner)

Partner: “Our service that queries your DB, sends the results over a VPN tunnel, and ingests them into our system is working fine, and doesn’t show any delays or network issues.”

J: “That’s what you said last time, and the problem ‘just went away’ the next night.”

P: “Try running this specific query locally and tell me how it works.”

J: (examines 450-line SQL query, shrugs, runs it) “2.5 minutes.”

P: “Hmm, works here with ‘limit 10000’ and fails with ‘limit 50000’. Well, nothing we can do on our end! Shall I set up a call with our Engineering team?”

J: “Wait, what was the runtime for that query on your end before it started timing out this week? For that matter, what was the runtime when it worked with ‘limit 10000’?”

[update]

P: “Here’s a chart showing it bang-on at almost that exact same runtime for weeks, until it started timing out every single time on Friday night.”

J: “Okay, let us know when you’ve fixed that. Just for fun, try changing the query to just return the count of rows instead of the ~36 MB of data. I, um, have a hunch.”

[update]

U: “9.6 seconds.”

J: “So, you can successfully submit obnoxious queries through Partner’s interface, as long as they don’t return any significant quantity of data. Hmmm, what does that sound like?”

[update]

(long meeting full of fingerpointing with no indication of how it started failing 100% of the time like throwing a switch)

J: “I have finally managed to reproduce the failure locally, which means I’m willing to try a small config-file change to work around the problem. Reminder: we still have no hint as to the actual cause.”

[you are here]

Little, Plastic


Brought To You By Apple,…

“Where QA is for the little people, and by that we mean paying customers.”

3D roundup

Made a more realistically-sized take-up reel for the baby takadai, to replace the entertaining-but-cumbersome filament spool. Belatedly remembered that bridges need two ends, and printed separate top and bottom pieces instead of a mess of spaghetti. More precisely, I halted the print before it started printing the spaghetti, and then made a snap-on top piece. 😁

Printed a Pokemon Go aiming device. Not because I have any great interest in running around Maskifornia catching mons, but just because I need to open the game up occasionally now that you can transfer them directly to Home (and in many cases, to Sword/Shield), and I might as well catch a few while I’m there. I liked the way this one was customizable, so I could enter the specific measurements for my phone and case. I did not like the fact that the creator has never heard of curves, so I had to sand the sharp corners.

On that note, I also printed sanding sticks. Cute little things, complete with printed screws.

I also printed a set of TUSH, a very popular design for an open filament spool holder that uses common skateboard/inline bearings, which I had enough of. This came in quite handy when the first attempt to print the sanding sticks failed completely due to lack of filament. This is the spool of ECO-ABS that came with the printer, and about halfway through it was miswound. I had to unreel about 8 feet of it to find the overlap, then wind it back on and feed it back into the machine. The spool of red PLA that I used up completely didn’t have this problem, so I’m 1 for 2.

I did not download and print this girl. She’s clearly expensive and high-maintenance. Also high-poly. Clever idea for the glasses, though.

Still a ways to go, though…

PU/steel wire kind of sucks

One of the things that made the baby takadai kits a bit complicated for many of the buyers was that each one came with a small spool of some exotic plastic-coated fiber. I got a pretty thin polyurethane over an even thinner steel core, and I’m very glad I didn’t try to use it first, as had been suggested. I did a little sanding with emery boards to make sure mine was smooth enough not to snag yarn/string, then made a few test braids.

Since it was so thin, I figured I’d use two strands per bobbin, and started tying it into a loop with my usual fisherman’s bend to attach it to the leader cords. It snapped. After several tries, I learned just how much I could tighten the half-hitches so they’d hold without breaking when I pulled the knot tight.

Then I started winding them onto the bobbins, and my fingers quickly reminded me that I was working with a loop of thin wire, as it dug in and abraded the skin.

Actually braiding with it was a real pain in the ass because, again, wire, so it was stiff as I worked the sword through to open the shed, and then held all the kinks I introduced in that process. I was ready to quit after about four inches of braid, but I settled for swearing to never touch the stuff again and give it away at the first opportunity. As soon as I’m done, I’ll take a picture and switch to something that better shows off the potential of my new koma and take-up reel. (which may not get finished in time, but as long as I can get some good pictures showing things you can’t do with the stock parts, I’m good)

Classical Reference

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”

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