3D Printing, Woodworking

This is a post. It’s a post about a post.

We just moved into a new house, and the 20-year-old signpost is showing its age. It had deteriorated at the bottom, so it was no longer set in a hole and was just leaning against a tree.  I decided to restore it and make use of a gift that the previous homeowners had left us.

Here it is on my workbench awaiting some TLC.


I planed the hanging board and the vertical post to clean up the faces. The horizontal post fell apart in my hands when I removed the bolts, so it went in the trash.

Here are the post and hanging board after being planed on each side.


I used the wood from the old vertical post to make the new horizontal post (since the bottom 18″ was unusable, it wasn’t long enough to be reused vertically). I found an abandoned 10′ post in the backyard, so I recycled it into the new vertical post for the sign.


I cut a lap joint in the post and sanded off all of the old paint. Here’s a before/after shot (taken with Reenact, of course).


Here’s a shot of the lap joint in the horizontal post after I added some spar urethane to both posts.


One last dry-fit before final construction:


I chamfered the edges of all of the posts on the miter saw to match the original; this should help prevent water from soaking into the top of the vertical post, and it looks nice too.


I removed all of the rust from the chain and eye bolts using a vinegar/salt solution followed by a water/baking soda solution. It worked way better than I expected.


If I had known how well the rust removal would go, I wouldn’t have bought new bolts to join the posts.


Chains attached.


The previous owners of the home had bought some ceramic house-number tiles in Italy but had never been able to put them up. Rather than just gluing them to the wood, I wanted a method that would be reversible if I didn’t like the result or if I made a mistake, so I designed and printed some hold-down clips to attached the tiles to the hanging board.


It was tight getting the tiny little galvanized nails tacked in without chipping the tiles, but half an hour with a nail set (actually a bolt with a concave point, since I couldn’t find my nail set) did the trick.  There is some space between the tiles and clips to allow for wood movement.


I hung the numbers up and trekked down the hill to plant the post.


Tada! Now the UPS driver will know where to bring our Amazon orders.


3D Printing, OpenSCAD, Programming

Create LEGO-compatible Angle Plates with LEGO.scad

LEGO Angle PlateIn response to a comment here, I wrote the first OpenSCAD module for generating complex brick shapes using my LEGO.scad project.

LEGO.scad is great for creating bricks and wings of all shapes and sizes, but it isn’t suitable for making complicated shapes like angle plates. LEGO sells 90º angle plates (pictured); the new module can generate plates with orientations between 0º and 100º.

This is the default output: a 90º plate with both sides 2×2.

Here’s one with an angle of 45º and different size sides:

Here’s the underside of one with an angle of 100º, a 2×3 base, and a 4×1 overhang:

To generate your own plates, check out the LEGO.scad repository and call the angle_plate() module in OpenSCAD. Feel free to share your creations in the comments below.

PHP, Programming

Export iMessages and SMS conversations as HTML

A couple of years ago, I explained how to get instant message conversations exported out of iChat as HTML files. Now it’s 2016, and Messages has replaced iChat, and iMessages have replaced all interpersonal communication. So how do you get HTML transcripts of your iMessages and text messages? Here’s how: with my new OSX Messages Exporter script.

The script exports all of your text/iMessage conversations from Messages (including group chats) and generates HTML files for each conversation. Here’s a screenshot of the HTML file generated for a iMessage conversation between me and my brother:

Screen Shot 2016-06-20 at 10.15.35 PM

And here’s what a group conversation looks like:

Screen Shot 2016-06-20 at 10.22.55 PM

(For a look at the actual HTML, see the example.html file in the repository.)

I’ll admit that there are a number of existing solutions for exporting conversations out of Messages, but mine has some distinct advantages over them:

  1. It supports group conversations.
  2. It generates human- and machine-readable HTML.
  3. It saves all attachments.
  4. It uses contacts’ names, not just their phone numbers.
  5. I wrote it.

If you want to give it a spin, download it from GitHub and run

./messages-exporter.php --help

from the command line for the current usage instructions.

Unpredictable Image Filenames, WordPress

New WordPress Plugin: Unpredictable Image Filenames

I’ve written a new WordPress plugin to help protect uploaded images from being accessed just by guessing the URL.

Many cameras and smartphones number their images in a predictable format. For example, iPhones use the format IMG_0001.jpg. If you include IMG_0345.jpg in a blog post, an unsavory third party could start regularly trying to access IMG_0346.jpg, attempting to view the image before you publish a post containing it.

Or, maybe you have a private blog that you only allow family members to read. Not all “private blog” plugins are able to require authentication to load images from /wp-content/, so the same unsavory third party could just start guessing URLs like /wp-content/uploads/2016/05/IMG_0001.jpg, hoping to eventually get a hit. 9,999 requests would enumerate every possible image from an iPhone for each month, almost definitely allowing an unauthorized person access to your photos.

The Unpredictable Image Filenames plugin for WordPress renames image files to a sufficiently unguessable name when you upload them. For example, IMG_0345.jpg could end up as 334AB1E8-28AB-4BE1-882D-3C112E95F055.jpg, and IMG_0346.jpg could be renamed A67C9CF9-0BB5-4FB4-AD03-DCB294F853EC.jpg. Try and guess that!

You can install Unpredictable Image Filenames from your WordPress admin plugins screen, download it from the .org plugins directory, or view the source on GitHub.

3D Printing, Programming

Today’s Functional Print: Baby Gate Support

In today’s “No, don’t go up there” news, I’ve printed a custom baby gate support.


Based on a design by Thingiverse user Printed_Solid, this support allows a pressure gate to be used against a post without attaching a wall cup, which would leave a permanent screw hole. I updated the original design to have longer and thicker corners to prevent strong children from pulling it off of the post, and the entire part is customizable to fit your specific post.

The SCAD script is available on GitHub, and the part can be customized and downloaded on Thingiverse.

OpenSCAD, Programming

Animating the Solar System with OpenSCAD

OpenSCAD is my language of choice for designing objects that will be 3D-printed, but I just recently learned that it also supports 3D animation.

To familiarize myself with this feature, I decided to animate the movement of the planets in our solar system. Here’s a GIF excerpt of the animation generated by OpenSCAD; it covers about 2.5 Earth years:


Neat, right? The axial tilts and orbital periods, speeds, and inclinations of the planets and moons are all accurate, but for visibility purposes, I scaled the size of the planets up 20x relative to the size of the sun and reduced the distance between them by 98%. The relative positions of the planets are also reasonably accurate for March 2016.

The script is available on GitHub; let me know in the comments if you’ve ever used OpenSCAD’s animation feature and what you made with it!

3D Printing, Games, OpenSCAD, Programming

Today’s Functional Print: Board Game Piece Bases

In today’s “do you think this is some sort of game?” news, I’ve designed and printed some boardgame piece bases.

These were printed specifically for my son’s “Thomas and Friends Tracks and Trestles” game, which was missing two of its bases, but the design is customizable to fit almost any size gamepiece.

The OpenSCAD script and STL file are available on GitHub, and you can customize your own gamepiece base on Thingiverse.

3D Printing, OpenSCAD, Programming

Today’s Functional Print: Stove Knob

In today’s “customizable knob” news, I’ve designed and printed a customizable knob.

When we moved into our current house, the knob to control the stovetop fan was missing:


After six months of procrastinating and one hour of OpenSCAD, it now looks like this:


Now I don’t have to turn on the fan with a pliers!


The OpenSCAD script and STL file are available on GitHub, and you can create your own customized knob in Thingiverse.