Threads – Pixel Art to Embroidery Stitch Digitization

Learning how to use Threads to digitize pixel art into embroidery patterns. I thought it might be easier to learn with a simpler design. So I created a quick lace/filigree cat silhouette.

If this is your first time designing for this hoop size, go to settings

Scroll down and use the drop-down to select “Custom Size” in the hoop selection

Input the dimensions of the hoop and give it a name (The 6×10 frame for our Bernette is called “Bernette B70 – Large”

You can also adjust some values to control the stitch density — these are the settings I am using for dense designs being embroidered on t-shirts.

Upload the image —

Adjust the size (if needed), select the number of thread colors. For now, I’m leaving the fill method set to the defaults!

Scroll down and click the “AI Layers” button

This will break your image into layers and begin the digitization process.

Click on each layer – you can adjust the settings used to compute stitches for the layer. You can change the color, use a different fill pattern, adjust density settings.

Once you have checked each layer, go back to the image settings page and click “Digitize”

Don’t forget to save the digitized project

You can sort the patterns by “Client” — I made sections for each of us

Clicking on the project will bring up a summary where you can download a DST file for use in an embroidery machine or the “Worksheet”, which is a PDF with the thread order.

Ink/Stitch and Threads

I had been trying to use InkScape and Ink/Stitch to digitize images for embroidery patterns. While I am certain that not really knowing what I’m doing is a huge component … I never manage to get a good pattern. The digitization process also sucks up all the resources on my laptop before falling over and requiring a restart. I was going to borrow Scott’s gaming laptop (lots of memory, lots of CPU, and GPU). Then I came across Threads — a Python Uvicorn server that uses the Ink/Stitch API to digitize images into embroidery patterns.

There was a significant limitation that I assume comes from the documented usage: you cannot create a pattern with a large number of unique colors. You can select up to six thread colors. However, I wasn’t going to run the tool on a laptop. I’m going to run it on a VM on our big server. Plenty of memory and processor available. And it can chug along, doing its thing, without impacting other VMs. So I created a fork that allows up to 32 unique thread colors (more than you probably want).

I want to digitize this mushroom design I created for Scott:

Blender Script: Moving Object

This script moves the selected object to be centered on the world origin but it sits on the z plane rather than half of it being below the z plane.

 

import bpy
from mathutils import Vector

# Put the origin at the center of volume
bpy.ops.object.origin_set(
type='ORIGIN_CENTER_OF_VOLUME',
center='MEDIAN',
)

for obj in bpy.context.selected_objects:
# The bounding-box corners are stored in object-local coordinates.
# Transform them to world coordinates before finding the lowest point.
lowest_z = min(
(obj.matrix_world @ Vector(corner)).z
for corner in obj.bound_box
)

world_matrix = obj.matrix_world.copy()
world_matrix.translation.x = 0.0
world_matrix.translation.y = 0.0
world_matrix.translation.z -= lowest_z
obj.matrix_world = world_matrix

Changing Password in an RDP session in an RDP session

You can use Ctrl-Alt-Del to bring up a menu to invoke a password change on your local machine. When you RDP to a box, there’s Ctrl-Alt-End but when you are using a jump box (rdp to box1 to rdp to box2), ctrl-alt-end lets you change the password on Box1, but how do you change the password on Box2?

explorer.exe shell:::{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}

Run that command

And you get the menu to change that password

 

Repurposing verse

Sec Def Hegseth is evidently out on a “Send Me” tour telling people how the bible justifies all manner of war and destruction. The current video has him quoting Isaiah.

Using “send me” as a slogan for literal war against ideological or religious enemies rips v. 8 out of its literary and theological setting. Isaiah 6:1–13 is a prophetic commissioning narrative, not a military commission. The chapter’s structure is important: vv. 1–4 present Isaiah’s throne-room vision of God’s holiness; vv. 5–7 move to Isaiah’s confession of uncleanness and ritual purification; only then, in v. 8, does the divine question “Whom shall I send?” appear, to which Isaiah responds, “Here am I; send me.” In context, the verb “send” marks prophetic dispatch—Isaiah is commissioned as a spokesman, not as an agent of physical coercion.

That becomes explicit in vv. 9–13, where the content of his mission is to speak a message of judgment. Isaiah is told the people of Judah will hear but not understand. Will see but not perceive.  He is not being sent to win a campaign or wage violence; he is being sent to proclaim an unwelcome truth in the face of disbelief, judgment, and national crisis. It is an especially strange prooftext for militarized rhetoric because Isaiah is sent on a mission defined, at least from a human perspective, by rejection rather than success. The point of Isaiah 6 is not heroic conquest but prophetic witness under judgment.

In parallel with the passage’s description of those who “hear but do not understand,” Hegseth seems to read but not comprehend: he extracts words from the text and repurposes them to sanctify his own commitments without reckoning with what the passage actually means.

Daily Updates

My prediction that weekly updates are going to be a thing of the past WAY more quickly than the monthly patch and reboot became insufficient: I switched to daily updates at home. Had at least 40 updates each night since! This host runs sendmail and Apache HTTPD on a Linux OS – not a million different applications or anything.

​[lisa@fedora5 ~]# dnf history list
ID Command line              Date and time       Action(s) Altered
67 dnf update                2026-09-18 02:39:22                53
66 dnf update                2026-09-17 02:21:58                44
65 dnf update                2026-09-16 02:44:46                41
64 dnf update                2026-09-15 02:23:13                46

 

First T-Shirt

The first t-shirt on my new machine is done! Lowering the thread tension was the answer. Other lessons:

  • The machine stitches a few times then pauses for you to cut the tail. It is not telling you it thinks the thread broke.
  • Not shrinking the pattern makes a HUGE difference. Compressing stitches is not good.
  • Cheap embroidery thread is frustrating. I made a test pattern on a scrap of fabric using some cheap thread I had purchased and used for hand stitching. Very cheap, large variety of colors. But in a machine? It breaks constantly. Every couple hundred stitches, I was re-threading a broken thread. Using my good thread, I only re-threaded the machine to change colors.

Reading Comprehension Fail?

I do wonder if Tyler Winklevoss actually read Runaround. The point Asimov makes in his stories has never been that my rules solve the problem of robot safety; his point is that even this simple set of rules yields unexpected behavior. That even seemingly reasonable rules interact in surprising and dangerous ways. Runaround itself is about a robot getting trapped by conflicts between the laws. And in later stories, Asimov keeps showing how easy it is to reinterpret, distort, or weaponize the laws. If anything, Asimov is evidence against the idea that frontier labs can just hard-code a few rules and call the problem solved.

If you don’t want to read, watch a movie, dude. The laws always get contorted to support all manner of robot apocalypse plots there too – hey, the real thing that’s damaging humanity is late stage capitalism. Let me just wipe out all of these financial systems to restore equity and thus save humanity. By the zeroth law, I am compelled to take this action!