Thursday, May 1, 2025
Laziness is the mother of invention
Saturday, April 6, 2024
Plastic belt buckle
Quite a while back, I came across a discarded belt with a broken buckle. I kept it in my "long stringy things" box in the garage until I could figure out what to do with it. Finally, today, I designed and 3D printed a new buckle for it, along with plastic rivets. I replaced all the metal, and now I have a no-metal belt that hopefully can clear airline security without being removed (not tested yet).
Saturday, June 3, 2023
More film photography
Friday, February 17, 2023
Curmudgeonly griping
One of the standard gripes about modern manufacturing is how many items break down because the manufacturer saved a very small fraction of the price, sometimes only a few cents. I find myself frequently resoldering mice and headphones, presumably because the wires were too thin, but there at least there is a functionality benefit from thin wires.
The most recent is our GE dryer where the timer knob always felt flimsy, and finally the plastic holding the timer shaft cracked. The underside revealed thin-walled plastic holding the timer shaft, reinforced with some more chambers made of thin-walled plastic. Perhaps over-reacting, I ended up designing a very chunky 3D-printed one.
I suppose there is an environmental benefit from using less plastic, but it needs to be offset against the environmental cost of repair and replacement. Adding ten grams of plastic would have easily made the knob way, way stronger, and that's about 0.01 gallons of crude oil, which is probably an order of magnitude less than the crude oil someone might use to drive to the store for a replacement (or a repair person being called in; in our case, it wasn't obvious that the knob was the problem; I suspected the timer at first, and disassembled it, before finally realizing that the knob had an internal crack that made it impossible for it to exert the needed torque).
Sunday, September 13, 2020
Concrete dumbbells
Monday, May 18, 2020
Wobble board, gamified
Last year, I made an adjustable wobble board for balance practice: a plywood disc with a 3D-printed plastic dome rocker. One thing that I always wanted was some sort of a device that would measure how long I was staying up on the board, detecting when the board edge hit the ground. I imagined things like switches under the board or even a camera trained on the board.
But what I forgot is that I already carry the electronics for the detection in my pocket. A smartphone has an accelerometer, and so if it’s placed on the board, it can measure the board angle and thus detect the edge’s approximately touching the ground. I adapted my stopwatch app to start and stop based on accelerometer values, and made this Android app. Now all I need to do is lay my phone on the board, and when the board straightens out the timer starts, going on until the board hits the ground. There are voice announcements as to how long I’ve been on the board, and a voice announcement of the final time.
Source code is here.
Instructions on building the wobble board and links to the 3D printable files are here.
One forgets how many things can be done with a phone.
I think my best time is just under a minute, with the board set to a 19 degree maximum angle.
Sunday, April 5, 2020
Paddles for classic video games
Thursday, March 26, 2020
DIY projects for hunkering down
I'm teaching online. Mostly, I'm doing it by writing short notes, broken up into discussion-thread-sized bits, and posting them on a discussion forum. But I also recorded some short video segments today, which reminded me that our one camera tripod had a broken hub. So I designed and 3D printed a new one. (Design files are here.)
It's been bothering me for a while that one of our bathroom faucets had rounded knobs that had to be grasped firmly by the fist to turn. This means that you get the knobs dirty when you start the water with dirty hands, and then after you wash up you get your hands dirty from the knobs when you turn off the water. Levers are way better: you can either move them with elbows or you can ensure that you push on one side with dirty hands and on the other side with clean hands. I printed some lever attachments that slide over our rounded knobs. (Design files here.)
The grocery store was out of toilet paper. So we ordered some giant commercial-establishment bathroom rolls. Of course, they don't fit our toilet paper holders in the bathrooms, so I made this one out of some scrap wood and a handlebar from a broken-down scooter:
My usual form of exercise--the climbing wall--has been shut down. So, I've had to switch to tennis. I found out that it's hard to move around playing tennis in long pants, and I didn't own any shorts, so I found some old khakis in my scrap cloth box, and cut them down and hemmed them:
And, finally, I sewed a mask for myself and one for my wife for when we go to the grocery store. Mine used this design and the one for my wife used this one, except that I added some heavy gauge insulated copper wire to shape the nose ridge area. (I used cotton T-shirt material as per this article, layered with some microfiber for one of the masks.)
Saturday, December 23, 2017
Cellular automaton snowflake generator
Christmas Day addition:
Adding a tiny bit of indeterminism--a chance of 0.5 of generating a cell instead of certainty--makes things look more like a real snowflake, though. Tap on Customizer in the above link if you want to play with it.
And here it is on our Christmas tree. Merry Christmas!
Monday, November 13, 2017
Flying rings
Wednesday, November 1, 2017
Captain Proton's Ray Gun
Friday, September 29, 2017
Gamecube controller to USB adapter
Saturday, September 16, 2017
Adding a USB charging port to an elliptical machine
Tuesday, May 30, 2017
Drawers for small electronic components
Friday, March 31, 2017
Star Trek cookie cutters for First Contact Day
Sunday, March 5, 2017
Super-simple fractal terrain generator
The algorithm is no doubt known, but some quick searches for terrain generation algorithms didn't turn it up, so I am posting for people's convenience.
There are some artifacts at internal triangle boundaries that better algorithms presumably don't have, but the algorithm is super simple to implement, and because it is based on triangles it directly makes a triangular mesh. Here is some code which does this, starting with a hexagon divided into six equilateral triangles, and putting out an STL file.
Wednesday, February 22, 2017
Going from 2D drawings to 3D printing

The final algorithm I settled on is a non-linear scheme that sets the height of the inflation of a 2D image at a given point in the image x by approximating the Lp norm (E(Txp))1/p of the exit time Tx of a random walk started at x. For further adjustment, you can replace Tx with min(Tx,K) where K is exponentially distributed, which flattens the inflation in inner regions. The code could use a lot of optimization (using pypy instead of cpython improves runtimes by a factor of 10, but Inkscape only bundles python) as on my laptop the code takes about 45 seconds with default settings on one of my simple test images.
While my original Valentine's day card used p=1, I have since found that p=2 produces more nicely rounded output.