Comment by delichon
1 day ago
> The obvious problem: you cannot reliably detect firearms from geometry alone.
The obvious problem with this argument is that in just the medium term, world-model style AI will get good at this task, but having big brother pre-approve every print will still be bad.
I think it's still not a viable problem to solve.
What happens if you print the handle on a different printer, and print it with an attachment which works as an ice-cream scoop?
Or how about you actually print an ice-cream scoop, and then stop the print halfway to just take the handle, and do the same for several other innocent looking parts which are carefully modelled to fit together after printing individually. There are just so many ways to get around any measures they could put in place.
How? The printer only ever retrieves G code for individual parts without any knowledge of what they are going to be assembled into. There is no viable way to solve this classification problem on this kind of incomplete data, is there?
That's broadly how it works today, yes: The printer itself has no concept of what it is printing. It's just running some heaters and spinning some motors in response to gcode.
Since such a printer is incapable of determining whether or not this gcode represents a legislatively-restricted item and then blocking its production, then that machine becomes illegal to sell in New York. Easy-peasy. It just takes a quick vote or two and the stroke of a pen, and it is done.
You're probably thinking something like "But that doesn't work at all," and I agree. But sometimes legislators just don't care that they've thrown out the baby along with the bathwater.
It depends how you define the problem. Certainly a human can look at a part and say "that's a lower reciever" but you probably can make something that functions as a firearm exclusively from inconspicuous parts. For the more limited case, an AI can definitely be trained, the broader case is likely unsolvable.
Btw, AFAIK they also want to lock down the slicer.
How the hell can you do that.
GCODE is mostly about pure maths and geometry (well, there's other stuff but in principle). They would forbid math? "Euclid is illegal."
1 reply →
It’s not nearly that hard of a problem. There are n gun files on internet, so validate the hash of those n files (g code whatever). These people aren’t cadding their own designs.
One big part of this is that gcode isnt really a 3d model its a set of instructions on how to move the printhead around. You don't download the gcode directly, because that varies by printer. You download a model, and then a slicing program turns that into a set of printer-specific gcode. Any subtle settings changes would change the hash of this gcode.
And the printer doesn't really know what the model is. It would have to reverse the gcode instructions back into a model somehow. The printer isn't really the place to detect and prevent this sort of thing imo. Especially with how cheap some 3d printers are getting, they often don't really have much compute power in them. They just move things around as instructed by the g-code. If the g-code is malformed it can even break the printer in some instances, or at least really screw up your print.
There are even scripts that modify the gcode to do weird things the printer really isn't designed for, like print something and then have the printer move in such a way to crash into and push the printed object off the plate, and then start over and print another print. The printer will just follow these instructions blindly.
1 reply →
Guns can be made out of simple geometric shapes like tubes, blocks, and simple machines like levers and springs. There is mathematically no way to distinguish a gun part from a part used in home plumbing - in fact you can go to the plumbing section of your local hardware store and buy everything you need to build a fully functional shotgun.
The g-code is not being distributed, because it's specific to each printer, filament, etc. G-code is not the same thing as a STP or STL file.
Seems trivial to create an infinite number of inconsequentially (but hash defeating) different variants.
In 3D modeling, there are parametric files where the end user is expected to modify the input parameters to fit their needs. So for example, if you have multiple parts that need to fit together, you may need to adjust the tolerances for that fit, because the physical shape will vary depending on your printer settings and material.
Making tiny modifications isn't just a method of circumvention, it's like part of the main workflow of using a 3d model.