3D Printing


My kit-built Rostock MAX Metal printing a filament spool holder I designed. I created almost everything plastic attached to this printer.
The same printer about a year later, outfitted with a counterweighted "flying extruder" platform, printing parts in two colors. The complete printer, including the cantilevered counterweight pulley masts. Fishing line runs over V-groove pulleys.

I've been working with 3D printers since 2013, and have made significant open-source contributions that are used by hundreds of people. I get a real kick out of knowing that I can help people solve problems that they used to think were impossible.

All told, I've released 21 open-source products for 3D printers. Some examples:

3D printing is one of the toughest challenges I've taken on. Open-source 3D printers started showing up in the late 2000s, after important 3D printing patents expired. Before that, you had to pay tens to hundreds of thousands of dollars for one. Now, you can get kits and fully-built printers for anywhere from a few hundred to a few thousand dollars.

I've also produced some non-open-source products:

I have significant experience building, upgrading, and operating "linear delta"-style 3D printers, like the one in the video. I also have experience operating FormLabs' Form 2 3D printer, which uses a very different process called stereolithography. I know a lot about how to design objects for both types of printer, and can take into account factors such as support structures and overhangs.

CNC Milling


My custom Probotix Meteor Fireball 3-axis CNC router doing a dry run.

A CNC router is a device which moves a cutting tool in two or more axes (usually 3, but sometimes 4 or 5). I used mine to drill 197 boards to go on a coneyor belt at a candle factory. I also helped the owner select the right kind of plywood, and did some calculations to make sure that the drive motors had enough torque to handle the weight of the boards and everything that would go on them. (My client didn't ask me to do that. I just thought it was a good idea.) These boards, and the depth gauges mentioned above, have been used to produce over one million candles.

In the video, you can see the router doing a dry run of the program I used to mill the boards. This was done by modeling the boards in SketchUp, placing all of the drilling points, and exporting to EMC2, which runs on the computer that controls the machine. I had it set up to drill three of them at a time. The fronts were drilled first. The boards were then flipped over, and pockets were milled in the backs. The production run took about 20 hours.

The router uses a standard 1/4" end mill. Some of the holes, and all of the pockets, are wider than that. The CNC machine compensates for this by doing a "plungebore" operation: the router is moved downwards in a spiral, rather than a straight line. You can see it doing this in the video, accompanied by a sort of wobbling sound.

The router doesn't have a way to sense the position or orientation of the boards, so it's vital that they all be lined up perfectly. The corner of the first board has to rest at the router's home position (X=0, Y=0), and the boards have to be perfectly square with the edges of the router. Otherwise, the holes and pockets will be milled in the wrong places. To this end, I designed several fixturing pieces, which you can see in the video. They were 3D printed in white plastic. Some of them are there to ensure proper placement and angle, and some of them serve as hold-downs. Designing, printing, and revising these pieces added about 15 hours to the job. In return, I was able to deliver a product that conformed perfectly to the specifications. The boards were installed without a hitch, and are still in use to this day.

Whoops, looks like something went wrong.

(1/1) ErrorException

file_put_contents(): Only 0 of 186 bytes written, possibly out of free disk space

in Filesystem.php (line 122)
at HandleExceptions->handleError(2, 'file_put_contents(): Only 0 of 186 bytes written, possibly out of free disk space', '/home/solidox/solidox.xyz/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php', 122, array('path' => '/home/solidox/solidox.xyz/storage/framework/sessions/XGQPdcp3IpipBx1RNQrbaYRIZKbkKbPpLW5TGzep', 'contents' => 'a:3:{s:6:"_token";s:40:"lmxA2QIjDMz1mHFLBdggvFcAv8eQh1RzoKP0BMIb";s:9:"_previous";a:1:{s:3:"url";s:28:"http://solidox.xyz/3DPandCNC";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}', 'lock' => true))
at file_put_contents('/home/solidox/solidox.xyz/storage/framework/sessions/XGQPdcp3IpipBx1RNQrbaYRIZKbkKbPpLW5TGzep', 'a:3:{s:6:"_token";s:40:"lmxA2QIjDMz1mHFLBdggvFcAv8eQh1RzoKP0BMIb";s:9:"_previous";a:1:{s:3:"url";s:28:"http://solidox.xyz/3DPandCNC";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}', 2)in Filesystem.php (line 122)
at Filesystem->put('/home/solidox/solidox.xyz/storage/framework/sessions/XGQPdcp3IpipBx1RNQrbaYRIZKbkKbPpLW5TGzep', 'a:3:{s:6:"_token";s:40:"lmxA2QIjDMz1mHFLBdggvFcAv8eQh1RzoKP0BMIb";s:9:"_previous";a:1:{s:3:"url";s:28:"http://solidox.xyz/3DPandCNC";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}', true)in FileSessionHandler.php (line 83)
at FileSessionHandler->write('XGQPdcp3IpipBx1RNQrbaYRIZKbkKbPpLW5TGzep', 'a:3:{s:6:"_token";s:40:"lmxA2QIjDMz1mHFLBdggvFcAv8eQh1RzoKP0BMIb";s:9:"_previous";a:1:{s:3:"url";s:28:"http://solidox.xyz/3DPandCNC";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}')in Store.php (line 128)
at Store->save()in StartSession.php (line 88)
at StartSession->terminate(object(Request), object(Response))in Kernel.php (line 218)
at Kernel->terminateMiddleware(object(Request), object(Response))in Kernel.php (line 189)
at Kernel->terminate(object(Request), object(Response))in index.php (line 58)