3D Printing, Programming

Today’s Functional Print: Train Valve Gear

In today’s “how did I ever live without a 3D printer” news, I’ve saved a decades-old toy train from the trash heap by printing a new valve gear for its left side of its wheels. The train is a 1986 model New Bright toy train, and it was destined to encircle our Christmas tree, but a missing piece was causing the front left wheel to get lifted off the track by a dragging piston rod. It took about half an hour to design a replacement in OpenSCAD and an hour to print. Its value is immeasurable.

Here’s the component by itself.


And here it is in place:


You might not be able to pinpoint it, since it fits so perfectly that it’s undetectable as an aftermarket add-on. Here’s a closeup:


The OpenSCAD script and STL file are available on GitHub.

3D Printing, Programming, Woodworking

Today’s Functional Print: Shop-Vac Adapter

In today’s “printing meets programming meets woodworking” news, I’ve printed an adapter that allows me to hook up my Shop-Vac hose (1 1/4″ diameter) to my planer’s dust port (4″ diameter). The adapter was designed in OpenSCAD using a module I wrote that can create adapters between two hoses of any size.


This print was also my first time using a cold acetone vapor bath to smooth out an ABS print. A vapor bath melts the edges and ridges in the print, smoothing out the whole thing. Here’s how the adapter looked after three hours soaking in vapor:


Whoops! Three hours was too long… although it is very smooth and shiny. I printed another adapter, but this time, I cut the layer height in half, to 0.1mm. This resulted in a much smoother surface that didn’t need acetone smoothing, but it took twice as long to print.


The largest available Shop-Vac adapter on Amazon is 2 1/2″ across and retails for $8.37, so this 4″ adapter can be reasonably appraised at $10. Money in my pocket, and it sure beats the duct tape I was previously using to connect the two machines.

The OpenSCAD script and STL file are available on GitHub.

3D Printing

Today’s Functional Print: Drawer Hardware

In today’s “we’re living in the future” news, I bought a dresser for only ten dollars because none of the drawers slid smoothly, and I printed replacement drawer slides, returning the dresser to a fully functional state. (The original slides that came with the dresser were all broken for unknown reasons.)

The hardware I printed is a suitable replacement for the Rite Track brand Kenlin socket and case runner. Each set’s retail value is approximately $4.90, and because I needed eight of them, I saved $39.20.

This is the socket that attaches to the drawer:


It was printed in two pieces and glued together to avoid needing to print excessive amounts of support material.


Here it is in place:


And here’s the corresponding runner that it fits into on the under-drawer metal bar:


The SketchUp models and STL files are available on GitHub.

Life, Music

Dies Irae: A Composition for Wind Ensemble

In 1998, when I was 14, I wrote a song for wind ensemble: ten brass/woodwind parts and three for percussion. I just recently found the original sheet music (which I think I made using Finale 97), and I transcribed the entire thing again so that I could share it here.

It’s called Dies Irae (“Day of Wrath”), and it’s meant to evoke a fateful day in the life of an unnamed protagonist, using unorthodox playing styles ala Daniel Bukvich’s Dinosaurs. I was inspired to write it after my dad (a professional musician and composer) remarked in the car that the rhythm of the windshield wipers would be an interesting basis for a song.

The full list of the events I was trying to portray is listed below, but listen to it first and see if anything comes to mind.

(If you can’t see the player above, you can access the MP3 directly.)

Here’s what I was hoping you heard:

  • 0:00: Morning. The protagonist sleeps.
  • 0:20: The protagonist’s alarm clock beeps.
  • 0:23: The alarm clock is hit, and the protagonist falls out of bed.
  • 0:27: The protagonist stands and stretches.
  • 0:34: The protagonist begins the day, following the usual routine.
  • 0:48: The protagonist’s car won’t start, but then it does.
  • 0:56: The protagonist begins driving.
  • 1:01: The turn signal is activated.
  • 1:08: It begins raining. Windshield wipers are running.
  • 1:25: The protagonist nears a railroad crossing and hears the bell and the train whistle, but tries to make it across the tracks anyway.
  • 1:51: The train puts on its (squealing) breaks.
  • 2:03: Car/train crash.
  • 2:07: Ambulances on the way. Horns honking, alarms ringing.
  • 2:23: A heart monitor is hooked up to the protagonist.
  • 2:30: Paramedics working on our protagonist, but the heartbeat becomes irregular.
  • 2:45: Cardiac resuscitation attempts. The heart monitor flatlines.
  • 3:09: Dirge.
  • 3:22: The heart monitor suddenly begins beeping again, erratically and then regularly.
  • 3:34: Oh happy day, the protagonist is not dead.

I consciously decided not to try and improve the song as I was reproducing it; if I rewrote it now, I’d give each section way more room to breathe, and I’d go for richer sounds that deviate further from tonic chords. But I don’t particularly have time or inclination right now to rewrite, so I’m leaving it as is as a testament to my fourteen-year-old self’s musical decision making process. (Not that I’m completely unhappy with the choices I made; I’m quite proud of many of them, and I still especially enjoy the sequence starting at 2:23.)

I’ve licensed the song and all of its associated files under a Creative Commons Attribution 4.0 International License. Basically, you are free to do with it what you want (reproduce, edit, perform, publish, etc.) as long as you give credit to me as the original author. The MusicXML file (containing all of the musical notation information), PDFs of the director’s score and individual parts, MIDI files, and a WAV audio version of the playback-quality MIDI are here on GitHub.

This song has never been played publicly and was only attempted privately once, by the George S. Parker High School Symphonic Band in Janesville, Wisconsin at the end of my sophomore year in high school… It did not go well. If you play it with real instruments, I would love to hear how it goes.

I used NoteFlight to re-score Dies Irae, and I would recommend it to anyone looking to write music in a Web-based editor. Word of warning, it is Flash-based. Still not bad though.

And as a testament to how far MIDI has come in 16 years, here’s what the one I saved back in 1998 sounded like:

Apparently, I used to live inside an 8-bit video game.

3D Printing, Programming

Today’s Functional Print: Guitar Strap Button

In today’s “validating my 3D printer purchase” news, I’ve printed a replacement strap button for a child’s guitar. Designed in OpenSCAD in about ten minutes, it took eight minutes to print and has an approximate retail value of $2.62.


The original remaining button (left) and the printed reproduction (right).



The OpenSCAD script and STL file are available on GitHub.

3D Printing, Akismet, Programming

Meet Akisbot


Akisbot is the Akismet mascot; he was originally designed by Dan Hauk, but this 3D version was modeled and printed by yours truly.

Here’s Dan’s design that I used as a reference during fabrication:


I designed the entire thing in OpenSCAD, and I’ve published all of the source files on GitHub, so you can print your very own Akisbot. The bot in these pictures was printed at 40% scale and is eight inches tall.


I wanted all of the joints in the robot to be movable, and in order to test that my design would work, I started by printing the arms, which should have been the quickest and easiest joint to print and test. (All of Akisbot’s parts were printed on an Orion Delta 3D with ABS plastic.)


Their small size actually caused them to take a very long time to print, since they would sometimes break loose from the print bed, and I had to slow the printer down so that each layer of plastic had the right amount of time to cool.


This forearm printed ok though. Notice the joint on the far end that fits with the joint on the end of the upper arm in the next picture.


Here’s a pair of upper arms. One of these things is not like the other.

The top of this piece fits inside of the joint in the upper arm, allowing it to bend as shown in the next picture.


I eventually got two full arms printed. It’s a shame that I later decided to modify the elbow joint and had to reprint all four of the pieces.


I printed the eye rings and eyeballs separately from the face and welded them in place with acetone later. In this photo, they were just set in place to check that they were the right size. I did re-print the inner eye parts so that they would fit more snugly.


Another dry fit to get a feel for how big the finished robot would be.


This is the base that connects the body to the wheels and treads. The “A” is the Akismet logo — I initially had printed a solid cube, but I thought this would be more fun.


These braces attach to the sides of the base to hold the wheels and treads in place. If I printed them again, I’d make them thicker; they’re a little flimsy.


This is the joint/skeleton system for Akisbot. All of the joints are movable and have freedom to move in all directions, but the base joint was made thicker to give it more support and not allow for as much vertical movement, since robots don’t usually bend over at the knees.

It was difficult to get exactly the right fit between the joint pieces so that they’d be loose enough that the arms and neck could move but would still stay in place from the pressure between the front and back of the robot alone. When the print finished, the joint was a little bit loose, so I added coats of clear nail polish to the inner joints until it was just the right tightness.


This was the first time I was able to put all of Akisbot’s parts together. He’s only held together with scotch tape, but it proved that welding his front and back parts together should work fine and confirmed that the joint sizing was correct.


The meter hand and the buttons were all painted with nail polish that my wife Christina already had on hand (no pun intended).

I still need to attach or print his monogrammed “A,” but I haven’t decided yet whether I’m going to print a stamp, paint it freehand, or stencil it in.


This was my desk shortly before finishing the project. It’s a graveyard of surplus plastic and deformed robot parts.

The tread was created using a pretty neat technique taken from MakerBot user emmett. You print just the perimeter of an object with a curlicued edge, and ABS is flexible enough that it creates a tread that can be routed around wheels. The modeled object is on the left, the printed perimeter on the right.


These antennas were tough to get printed without the ball snapping off; I gradually increased the radius of the rod until I got two successful prints and called it a day.


This is Akisbot during the final acetone glue-up and clamp-up. The ABS plastic I used is soluble in acetone, so to permanently connect two pieces of ABS, you can just dab some acetone on one and clamp them together. They’ll become bonded as if they were one piece of plastic.


3D printing isn’t foolproof. This is the bag of just the green broken parts and extra plastic generated during the build process.


Akisbot’s total print time, not including assembly or design or re-prints, was about nineteen hours.