3D Printing, Maker, OpenSCAD

LEGO Gender Equality

At the suggestion of Thingiverse user MrZaius, I’ve added support for female dual-sided bricks to my LEGO-compatible brick OpenSCAD library. The library already had support for male dual-sided bricks, so this is great progress towards eliminating the gender dual-sidedness gap.

A cross-section of a female dual-sided plate.

A cross-section of a female dual-sided plate.

Female dual-sided bricks are twice as tall as their equivalent single-sided brick in order to allow for enough space for the studs of other bricks to fit in on each side. You can try making your own customizable LEGO-compatible brick with the Thingiverse Customizer.

Standard
Automattic, Flash Talks, Life

I Told Some Jokes

Every year at Automattic’s company-wide meetup, everyone is required to give a “flash talk” — a four-minute presentation on any (any) topic of their choosing. For a few years, I’ve been thinking of using my four minutes to try standup comedy, and this year, I finally did.

All of the jokes are original material, and I did my own hair and makeup.

Standard
Android, Firefox OS, iOS, Mozilla, Reenact, Swift

Reenact for iOS

Reenact, the world’s most popular app for reenacting photos,* is now available for iOS. It is free and ad-free.

Reenact for iOS: Reenact photos with Reenact.

Reenact for iOS was written in Swift in about three days. It’s compatible with any iPod Touch, iPhone, or iPad running iOS 8 or newer. It’s open-source, just like the Android version.

Take a few minutes during the holidays this month while you’re visiting your family, and reenact a photo from your childhood. Wouldn’t your mom and/or dad and/or sister and/or brother just love that? It won’t cost you anything, and you might even have fun!

You can find Reenact on the App Store. Try it out and let me know what you think!

* Probably

Standard
Android, Firefox OS, Mozilla, Reenact

Reenact Now Available for Android

I’ve increased the audience for Reenact (an app for reenacting photos) by 100,000% by porting it from Firefox OS to Android.

reenact-android

It took me about ten evenings to go from “I don’t even know what language Android apps are written in” to submitting the .apk to the Google PlayTM store. I’d like to thank Stack Overflow, the Android developer docs, and Android Studio’s autocomplete.

Reenact for Android, like Reenact for Firefox OS, is open-source; the complete source for both apps is available on GitHub. Also like the Firefox OS app, Reenact for Android is free and ad-free. Just think: if even just 10% of all 1 billion Android users install Reenact, I’d have $0!

In addition to making Reenact available on Android, I’ve launched Reenact.me, a home for the app. If you try out Reenact, send your photo to gallery@reenact.me to get it included in the photo gallery on Reenact.me.

You can install Reenact on Google Play or directly from Reenact.me. Try it out and let me know how it works on your device!

Standard
Firefox OS, Mozilla, Reenact

A visual refresh for Reenact

After I released Reenact (an app for reenacting photos) last week, Joen Asmussen graciously offered to provide some professional design guidance. I could never say no to design help, and in almost no time at all, Joen put together a new look for Reenact. I love it, and it has given me extra motivation to get working on Reenact for Android.

This new look is now live on the Firefox Marketplace and will hopefully be making an appearance on other platforms soon. Thanks, Joen!

reenact-on-firefox-os

intro

capture

confirm

share

Standard
Firefox OS, JavaScript, Mozilla, Open Source, Programming, Reenact, Software, Web Applications

Introducing Reenact: an app for reenacting photos

Here’s an idea that I’ve been thinking about for a long time: a camera app for your phone that helps you reenact old photos, like those seen in Ze Frank’s “Young Me Now Me” project. For example, this picture that my wife took with her brother, sister, and childhood friend:

IMG_8943

Reenacting photographs from your youth, taking pregnancy belly progression pictures, saving a daily selfie to show off your beard growth: all of these are situations where you want to match angles and positions with an old photo. A specialized camera app could be of considerable assistance, so I’ve developed one for Firefox OS. It’s called Reenact.

The app’s opening screen is simply a launchpad for choosing your original photo.

intro

The photo picker in this case is handled by any apps that have registered themselves as able to provide a photo, so these screens come from whichever app the user chooses to use for browsing their photos.

pick

gallery

The camera screen of the app begins by showing the original photo at full opacity.

capture-init

The photo then will continually fade out and back in, allowing you to match up your current pose to the old photo.

capture

Take your shot and then compare the two photos before saving. The thumbs-up icon saves the shot, or you can go back and try again.

confirm

Reenact can either save your new photo as its own file or create a side-by-side composite of the original and new photos.

save-type

And finally, you get a choice to either share this photo or reenact another shot.

share

Voila!

youngmeyoungson

If you’re running Firefox OS 2.5 or later, you can install Reenact from the Firefox OS Marketplace, and the source is available on GitHub. I used Firefox OS as a proving ground for the concept, but now that I’ve seen that the idea works, I’ll be investigating writing Android and iOS versions as well.

What do you think? Let me know in the comments.

Standard
Life, Woodworking

What’s Old is New Again… and Then Old Again

IMG_2821

My father-in-law built this hutch in the 1980s, and after being used as a bookshelf for twenty years, it sat unused in a rabbit shed. My wife asked me to repair it and refinish it.

IMG_2794

Here’s the main problem: one of the legs broke and had been replaced by a piece of scrap. Such an elegant solution!

IMG_2795

The damage hiding beneath the scrap.

IMG_2796

The back panels were in pretty bad shape. The bottom section was literally held together with tape…

IMG_2797

…so I removed it.

IMG_2801

Very carefully, I cut out the broken leg. I believe this is also how a doctor repairs a broken leg.

IMG_2802

IMG_2805

I used the leg on the other side to trace a template onto the new wood.

IMG_2806

A handsaw and a coping saw took care of the cuts.

IMG_2807

IMG_2808

The bottom shelf sits inside a dado, so I had to add that to the new piece.

IMG_2809

I hand-cut the dado because my table saw was covered in boxes, since I was reorganizing the garage during this project.

IMG_2811

IMG_2812

IMG_2818

You can hardly tell where the new wood starts and the old wood ends!

IMG_2819

Copious amounts of wood filler took care of the screw holes and the gaps between the two pieces.

IMG_2820

After sanding, it was all smooth and continuous.

IMG_2824

I took the top panel off of the back too because it was water-damaged, and since I was going to replace the bottom panel, I could just replace them both with a single sheet of plywood.

IMG_2833

I sanded the entire hutch until the finish was gone. This is my least favorite part of any refinishing project.

IMG_2844

The new birch plywood back panel.

IMG_2845

Ready for paint. Oh no, paint? Yes paint. I wouldn’t have used non-matching wood plus wood filler if it wasn’t going to be painted anyway.

IMG_2853

My wife says this color is popular right now. (I believe its official name is “57 Chevy Bel Air Seafoam.”) She asked that I use chalk paint to get the “old” look; this paint should wear more easily than regular paint and begin to look even more distressed as we use the hutch.

IMG_2854

IMG_2856

The repaired corner. Imperceptible. Undetectable.

IMG_2857

I reused the old hardware, since we were going for an old look anyway.

IMG_2858

Oops. I probably should have checked that the doors lined up before screwing them back on. Maybe that’s why one had been taken off. I ended up filling the screw holes for one set of hinges and rehanging the door 1/8″ higher.

IMG_2860

With arms wide open.

IMG_2859

The finished product. I have a “huntch” that this hutch is ready for another thirty years of use.

Standard
Life, Woodworking

…And Some Benches

After I finished our kitchen table, I started on two benches: one for each long side of the table. At the last minute, my wife and I decided (a.k.a., my wife decided) to include some storage areas in the benches too.

Just like with the table, I started with a design in OpenSCAD:

Screen Shot 2015-09-25 at 10.55.27 AM

(And just like with the table, the source file is on GitHub.) Both the benches and the table are actually generated by the same code, so they literally are miniature versions of the table.

I bought some 15″ pine legs from Home Depot, but I wanted an 18″ tall bench. What to do? Stretch the legs out, of course.

IMG_2469

I cut some blocks out of 3×3 poplar and glued them to the ends of the legs.

IMG_2471

IMG_2472

After sanding, the transition is totally smooth. After paint, you won’t have a clue that these legs weren’t 17″ long.

IMG_2473

I cut mortises in the bench legs to accept the apron pieces. Not all of the legs received an accidental third mortise like this one.

IMG_2500

I cut tenons into the ends of the apron boards and added a groove to accept the panel that will act as the bottom of the storage area in each bench.

IMG_2499

The first dry-fit. Everything fit, and the legs all mostly touched the ground.

IMG_2506

I cut the panels to size and notched out the corners so that they’d fit around the legs. Each bench has two panels; I slid them in from the end before fitting the short sides of the apron onto the tenons.

IMG_2508

Glue-up time: I glued all the short sides separately.

IMG_2510

And the long sides plus stretcher.

IMG_2511

I did two coats of paint at this step so that I could avoid a lot of taping to not get paint all over the bottom panels.

IMG_2627

Remember what I said about how the legs would look after paint? You can’t tell that each leg has a block of poplar glued to it.

IMG_2633

I slid the panels in from each end and glue all of the mortise and tenon joints. This is immediately after removing the clamps.

IMG_2635

Enough about the bases, time to make the seats. I cut four pieces of 7″ 3/4″ red oak and joined them into two bench seats with biscuits.

IMG_2636

A single bench seat.

IMG_2638

After sanding, I rounded the edges over with a trim router.

IMG_2639

Before staining.

IMG_2642

After staining.

IMG_2737

I installed some wrap-around hinges on each bench to make accessing the storage as easy as possible.

IMG_2738

The hinges from the back. Subtle and refined.

IMG_2739

Benches and table, together at last.

IMG_2741

The benches fit underneath the table, exactly like a Transformer.

Standard
Life, OpenSCAD, Woodworking

I Built a Table

Before we moved, we sold our kitchen table. We had bought it new a few years ago; it was expensive, but it got so thoroughly scratched and dinged up (and it couldn’t be refinished, since it was basically a plasticky veneer over fiberboard) that we didn’t want to bring it with us. So we sold it, but we didn’t buy a replacement; the plan was that after we moved, I’d build us a table that would last.

I opted for a farmhouse-style table with breadboard ends for two reasons: I had never done breadboard ends before and I wanted to try it, and also Christina liked that style best.  I designed the project in OpenSCAD first, which really helped with visualizing the joints and knowing how much wood to buy.

table-render

(The files are all on GitHub. It will even print out a cut list in the console when you render it.)

IMG_2197

The supplies: four legs from Lowes and S3S lumber from a local lumberyard. (S3S means “surfaced three sides;” the top and bottom have been planed smooth, and one edge is smooth and square. Anything you’d get from Home Depot would be S4S, but at as much as 4x the cost.)

I chose red oak for the top, since I’m familiar with it and it was reasonably priced. It’s a nice hard wood that should stand up to the abuse that a kitchen table gets. I did splurge and get the quarter-sawn boards which cost a little more, but they display some really pretty grain patterns. Also, they don’t expand and contract as much with humidity as the flat-sawn boards do; that’s a plus.

For the apron (also known as the skirt, also known as the base, also known as “those boards under the top”), I chose poplar. I chose poplar because I asked the guy at the lumberyard what I should choose and he said poplar.

IMG_2206

I cut the apron boards by hand because I couldn’t find the sled for my table saw. Also, you’re not a real woodworker if you use anything but hand tools. Just kidding I love power tools.

IMG_2213

I beveled one edge of each of the table legs so that they’d fit more snugly with the corner brackets.

IMG_2216

A couple of quick 45º cuts on the table saw gave me the corner brackets that join the apron edges together and connect the apron to the legs.

IMG_2217

Here are all of the apron pieces cut to length and ripped to width. Take note that there are four boards in the left stack. This will be relevant later on.

IMG_2218

I cut dadoes with my table saw in the long apron pieces to accept the stretchers (the long boards that go inside the middle of the apron). They’re called “stretchers” because they played basketball in high school.

IMG_2219

The aforementioned dadoes.

IMG_2220

Dado closeup. Notice how they’re great.

IMG_2228

I decided to make the table longer than I had initially planned, and my trip back to the lumberyard yielded this 8″ wide board with a neat stripey pattern that I knew would look great as the breadboard ends. Batman’s appearance in the previous and next pictures is courtesy of my sons Gabriel and Gideon.

IMG_2233

This is the initial fitting of the apron. I’ve said it before and I’ll say it again: I love my 90º clamps.

IMG_2235

The stretchers were attached with screws after being fit into the aforementioned aforementioned dadoes.

IMG_2236

This is how I cut the pocket holes in the corner brackets. I guess I could have used my pocket hole jig, but that didn’t occur to me until just now.

IMG_2239

The glued and screwed apron. Remember how there were four stretchers in the pile earlier? When I was cutting the dadoes, I miscalculated and only cut three, so one stretcher didn’t make the team. Sorry stretcher. Maybe try out for cross-country instead.

IMG_2240

I used threaded inserts in the legs in order to make them removable, since this table will be traveling with me for the rest of my life.

IMG_2241

The base of the table, “base”-ically ready for paint…

IMG_2301

…but not before I cover the screw holes with oak plugs and sand them flush. It’s the little things.

IMG_2242

A closeup of the corner brackets. See how the beveled edge on the leg helps the fit.

IMG_2254

Here are the boards I chose for the top, cut to length, but not yet ripped to width. Those gaps between them will disappear by the end of the process.

IMG_2257

After ripping the boards to even widths, I cut slots for the biscuits that I used to join them together. “Biscuits” are just little cardboardy ovals, much like you might be served in a hospital cafeteria.

IMG_2260

You can never use too many biscuits. The only reason I didn’t use more is because our region is in the middle of a biscuit shortage right now.

IMG_2261

The middle of the tabletop, dry-fit. See, those gaps are starting to disappear.

IMG_2264

This is the glue-up. The 2x4s help keep the boards flat while the pipe clamps squeeze them together. (The technical terms for the 2x4s are “cauls.” ? The More You Know ?

Here’s a before-and-after showing how the tabletop looked immediately after being glued and then again after some light sanding. The glue disappears entirely, and the boards are so close together, you can’t easily see the seam.

IMG_2275

Some sawdust mixed with wood glue filled any larger gaps. After sanding, you couldn’t tell that a gap had existed.

IMG_2284

The breadboard ends need a groove (aka “mortise”) to accept the tenon (aka “thing sticking out”) from the middle of the table. I couldn’t get my router working, so I tried to cut the mortise in the breadboard end with a drill press and Forstner bit. It technically worked, but it was a little messy.

IMG_2287

I got my router working and used it to shave down the thickness of the tenons, which were cut out with a jigsaw.

IMG_2288

Mortise, meet tenon. You two will be working together very closely for a long time.

IMG_2289

This dry-fit felt so good.

IMG_2290

These pins are what hold the breadboard end on the table. The center pin is glued in, but the outer ones just kind of float, since they need to be able to move from side to side as the wood in the table expands and contracts.

IMG_2292

This little peg went to market…

IMG_2296

This little peggy stayed home.

IMG_2294

The completed table top, ready for sanding and stain.

IMG_2302

I flipped the top over and stained the bottom as a test run (and also since the bottom needed to be stained).

IMG_2303

The legs were painted a color called “Creamy,” which coincidentally is the same color as my actual legs.

IMG_2304

After painting the apron, I cut slots in it with a biscuit joiner to accept the tabletop fasteners. This was done late at night by the light of the moon, which was actually just sunlight that the moon reflected. (? The More You Know ?)

IMG_2307

These fasteners allow the tabletop to be attached to the apron but still move from side to side as the wood grows and shrinks throughout the year.

IMG_2308

IMG_2310

Here’s the top of the table after sanding but before staining. The sanding process took about three hours and included sanding the entire top to 80, 120, 150, and 220 grits.

IMG_2312

The top was stained with Varathane’s “Kona” stain color, but it looks more like Kailua to me.

IMG_2315

I really like how the stain brought out the stripes in the breadboard ends.

IMG_2339

The top after three coats of semi-gloss polyurethane. I liked the table so much at this point, I decided to replace the top of my workbench with it.

IMG_2340

Pretty.

IMG_2341

Stripey.

IMG_2349

The finished product. The total materials cost was around $300, and my time invested into it was about 60 hours.

The return on that investment will be infinite: instead of just being a piece of furniture that we bought to eat at, this table is now (and will be) a part of all the memories we’ll make around it as a family.

IMG_2300

Standard
AutoAuth, Comment Snob, Feed Sidebar, Links Like This, Mozilla, Mozilla Add-ons, Mozilla Firefox, OPML Support, RSS Ticker, YouTube Comment Snob

My Future of Developing Firefox Add-ons

Note: AutoAuth is now being developed by Steffan Schlein. If you would like to leave feedback, please create an issue on GitHub.

Mozilla announced today that add-ons that depend on XUL, XPCOM, or XBL will be deprecated and subsequently incompatible with future versions of Firefox:

Consequently, we have decided to deprecate add-ons that depend on XUL, XPCOM, and XBL. We don’t have a specific timeline for deprecation, but most likely it will take place within 12 to 18 months from now. We are announcing the change now so that developers can prepare and offer feedback.

In response to this announcement, I’ve taken the step of discontinuing all of my Firefox add-ons. They all depend on XUL or XPCOM, so there’s no sense in developing them for the next year only to see them become non-functional. AutoAuth, Comment Snob, Feed Sidebar, Links Like This, OPML Support, RSS Ticker, and Tab History Redux should be considered unsupported as of now. (If for any reason, you’d like to take over development of any of them, e-mail me.)

While I don’t like Mozilla’s decision (and I don’t think it’s the best thing for the future of Firefox), I understand it; there’s a lot of innovation that could happen in Web browser technology that is stifled because of a decade-old add-on model. I only hope that the strides a lighter-weight Firefox can make will outweigh the loss of the thousands of add-ons that made it as popular as it is today.

Standard
Life, Upholstery

I Conquered the Ottoman Empire

My wife and I bought an ottoman seven years ago; it was upholstered in some sort of faux leather that was immediately torn by the vacuum cleaner. Over the years, the top began to crack, and more tears appeared on the sides.

01 - Before

02 - Cracked Corner

03 - Torn Side

Buying another ottoman wasn’t in our budget, but neither was staring at the ugly cracked vinyl any longer, so we reupholstered it in some more durable microfiber fabric. Fixing furniture can seem scary, but it’s not much more than wood, foam, and fabric.

Here’s the top of the ottoman after removing the old upholstery.

topless

I just stretched a 50″ square of microfiber underneath it, stapled in the center of each side, and then stretched and stapled along each side. We kept it simple by electing to fold the corners over instead of sewing them to fit.

05 - Bottom of Recovered Top

Tack on some cambric for that professional look and feel, and the top is done!

06 - Cambric on Top

Here’s the base of the ottoman with the drawers removed, the top unscrewed, and the old upholstery torn off.

04 - Old Cover Removed from Base

The sides were a little more complicated, but not much more than a bunch of staple-stretch-staple steps.

Stapled Side

Reupholstered base

Screw the feet back on, and it looks like a turtle on its back.

turtle

Flip it over, and here’s the finished product! We left the drawer faces alone, since they haven’t deteriorated (yet).

07 - Finished Product

Given that it’s been six years since my last adventure in upholstery, I’m pretty happy with how it turned out.

Standard
Woodworking

I Made a Grasshopper Pull Toy

As soon as the weather warmed up enough to move the car out of the garage, I wanted to get started on a new woodworking project, and this grasshopper pull toy project from The Wood Whisperer looked like a fun one to make for my daughter.

I started by gluing up some scrap to make the body, since I don’t have much wood around here that’s thicker than 3/4″.

2 - Glued up some scrap before planing it down to size

I planed that block down to 1 3/4″ and planed some other boards to 11/16″ and 3/8″ for the legs.

3 - Templates glued in place

I rough-cut the parts using a jigsaw:

4 - Rough-cut parts

And then sanded them down to size using a belt sander clamped to my workbench upside-down bench sander.

5 - Sanded down to size templates removed

I chamfered the edges of the body and sanded the edges of the legs to remove any sharp corners.

6 - Edges chamfered and sanded

After ordering some wheels and pegs from a hobby shop, I had a working dry-fit. I needed to modify the length of the rear axle because the wheels I bought are a little wider than the middle legs, resulting in the rear legs getting stuck on the wheel each time they went around.

7 - Dry-fit

I wanted to add some color to the grasshopper body, so I tried using some semi-transparent green stain, but it came out blotchy and very faint. If I did it again, I’d either do a glossy green paint on the body or stain the entire toy with a normal wood stain.

I originally stained the wheels green too, but my wife commented that it might look better if the wheels weren’t the same color as the grasshopper to give the illusion that the legs are moving separate from the wheels. As per usual, she was right.

8 - Finished Product

A few googly eyes and a string completes the package. It’s ready to be pulled!

9 - In motion

Standard
Google, Interpr.it, Mozilla

Implementing Mozilla Persona on Interpr.it

When I first launched Interpr.it as a Google Chrome extension translation platform four years ago, I used Google OpenID to authenticate users, because:

a) I didn’t want people to have to create a new username and password.

and

b) It made sense that Chrome extension authors and translators would already have Google accounts.

Years passed, and Google announced that they’re shutting down their OpenID support. I spent three hours following their instructions for upgrading the replacement system (“Google+ Enterprise Connect+” or something like that), and not surprisingly, it was time wasted. The instructions didn’t match up with the UIs of the pages they were referencing, so it was an exercise in futility. I’ve noticed this to be typical of Google’s developer-facing offerings.

I made the decision to drop Google and switch to Mozilla’s Persona authentication system. Persona is like those “Sign in with Twitter/Facebook/Google” buttons, except instead of being tied to a social network, it’s tied to an email address — something everyone has. My site never has access to your password, and you don’t have to remember yet another username.

In stark contrast to my experience with Google’s new auth system, Persona took less than an hour to implement. Forty-five minutes passed from when I read the first line of documentation to the first time I successfully logged in to Interpr.it via Persona.

interprit-persona

If you originally signed in to Interpr.it with your GMail address, you won’t notice much of a difference, since Persona automatically uses Google’s newest authentication system anyway.

Mozilla does so many things to enhance the Open Web, and Persona is no exception. Developers: use it. Users: enjoy it.

Standard
3D Printing, Maker, OpenSCAD, Programming

Print your own LEGO-compatible bricks

Given that I have a 3D printer and a five-year-old son, it was inevitable that I would eventually print some LEGO-compatible bricks.1 I knew that bricks were a popular “look what I can print” demo, but after I tried out a few of the popular printable LEGO-compatible models [1] [2], I found that none of them were designed accurately enough to reliably interlock with genuine LEGO bricks, and none of the libraries included support for any shapes besides the basic rectangular brick.

To solve this problem, I’ve written a LEGO-compatible brick generator that is more feature-rich than any other. It has support for customizing the following brick aspects:

  • Length, width, and height
  • Shape: brick, tile (smooth-topped brick), wing, slope (brick with an angled face), curve (brick with a curved face), or baseplate.
  • Size: LEGO or DUPLO
  • Hollow or solid studs (the little bumps on top of the bricks)
  • Horizontal rod holes
  • Vertical axle holes
  • Notched sides on wings so that the wing can be attached to a plate.
  • Slope/curve length/angle
  • Curve style: convex or concave
  • Double-sided bricks (studs on both the top and bottom)
  • Roadways: smooth sections on the top of a brick

These characteristics can combine to create millions of unique bricks. You can generate anything from this vanilla 2×4:

lego-brick

to this extensively customized brick that you’ll never be able to buy from LEGO:

lego-slope

This assortment of bricks contains examples of all of the available customizations:

customized-lego

But this is still just a tiny fraction of the possible permutations.

Here are a few bricks I’ve printed. I haven’t gone crazy with customizations, mainly because what I print is dictated by what my son asks for, and he’s only been requesting wings, wings, and more wings so he can build spaceships.

The script is available on GitHub, and I’ve published it on Thingiverse as well for easy customizing. (It’s by far my most popular Thingiverse model.) Download the script, print your own bricks, and send me a photo.

1. At the request of the LEGO corporation, homemade bricks should be called “LEGO-compatible bricks,” not “LEGO bricks.” FYI.

Standard
3D Printing, Cooking, Maker, Programming

Today’s Functional Print: Letter Cookie Cutters

In today’s “delicious but still functional” news, I printed a set of letter cookie cutters as part of a Christmas present for my sister’s family. The theme for our family’s gift exchange this year was “locally made gifts,” and it doesn’t get any more local than my own desktop.

cookie-cutters

I printed the cutters in T-Glase, a semi-transparent and food-safe plastic. Printing with T-Glase was a welcome change from using ABS, since it sticks to the bare glass print bed with no additional preparation, while ABS requires a bonding agent like glue or special tape.

A set of 26 cookie cutters sells for about $12, so these five letters are worth about $2.30.

cookie-cutters-reverse

The OpenSCAD script is based on this pi cookie cutter script by Thingiverse mrbenbritton.

The script can theoretically produce a cookie cutter from any character you can type on your keyboard, although it won’t work for all characters, like those that have interior shapes, like the letter “O.” Let’s say that was left as an exercise for the reader.

The OpenSCAD script and STL file are available on GitHub.

Standard
3D Printing, Maker, Programming

Today’s Functional Print, Failure Edition: Vacuum Cleaner Wheel

In today’s “I wheely love printing” news, I tried and failed to print a replacement wheel for a Kenmore Whispertone 12.0 vacuum cleaner.

IMG_0180

The original wheel’s clip had broken, causing the wheel to come unattached from the vacuum canister:

IMG_0016

Replacement wheels can be bought for $9 plus shipping, but why pay almost ten dollars when I have a perfectly good wheel printer sitting on my desk?

This was perhaps my most challenging OpenSCAD reproduction yet, but I was very happy with the finished model. It follows the original very closely but uses a little less plastic:

Vacuum Wheel Model

My first print, with 0.2mm layer heights, printed successfully and fit into the rubber tread perfectly.

But unfortunately, the clips were too weak and could not survive being bent towards each other:

IMG_0169

So I printed another wheel with 0.1mm layers to improve adhesion between layers, and I modified the clip design to be wider at the base and not have any dramatic layer size changes:

This print’s clips were much stronger — I could bend them so they were almost touching, but it was really hard to do. Sadly, when I tried to clip the wheel onto the vacuum, the clips themselves were stronger than the base they were attached to, and they burst through the back of the wheel:

IMG_0168

Since each of these prints took eight hours, and since I’m not 100% confident that I could get a working wheel on the third print, and since my mother-in-law told me I didn’t have to do it in the first place, I abandoned this project.

If you’d like to try printing the wheel for yourself (or would just like to use the model as a basis for a different project), the OpenSCAD script and STL file are available on GitHub.

Standard
3D Printing, Christmas, Maker, Programming

Today’s Functional Print, CHRISTMAS EDITION: Christmas Tree Feet

In today’s appropriately festive 3D printer news, I’ve printed replacement feet for some ornamental Christmas trees:

christmas-trees

These feet took a while to design — the organic shapes and border ridges were new concepts to me in OpenSCAD, but I was able to settle on a design that could be printed without supports.

feet

Spot the original, if you can!

The feet didn’t require supports, but this was only because I printed the “toe” separately and attached it with acetone afterwards. If I hadn’t done this, I would have had to print a bunch of additional support along the bottom of the foot.

feet-in-place

The trees are similar to OpenSCAD script and STL file are available on GitHub. Feliz Navidad!

Standard
3D Printing, Maker, Programming

Today’s Functional Print: Wire Cube Plastic Connector

In today’s “hey, that’s actually useful” news, I’ve printed a connector for assembling wire cube shelving. The shelves are shipped as a stack of identical wire squares that come together with round plastic connectors, allowing you to build customized shelves, like this one:

wire-cube-shelving

We bought some at a garage sale, but we were two connectors short of a full set. I designed the replacement in OpenSCAD and printed each one in about an hour and twenty minutes.

connector-on-bed

The finished print with support material still attached.

connector-off-bed

After removing support material.

connector-in-place

Amazon sells 4-packs of these connectors for $6.44, so the retail value of this print was $1.61.

The OpenSCAD script and STL file are available on GitHub.

Standard