Google,, Mozilla

Implementing Mozilla Persona on

When I first launched 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.


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 via Persona.


If you originally signed in to 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.

3D Printing, 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:


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


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


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.

3D Printing, Cooking, 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.


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.


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.

3D Printing, 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.


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


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:


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:


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.

Christmas, Life

Our 2014 Christmas Letter

Before I can even open with a greeting, I need to share the most important news since our last Christmas letter: Late last December, Jon Lovitz personally replied to me on Twitter. THE Jon Lovitz, of “Saturday Night Live” and “City Slickers II: The Legend of Curly’s Gold” fame. Now, I don’t consider myself a hero, but if some people want to call me that, well…

Friend, sit down with a mug of hot cocoa, a blanket, and a purring kitten, because you’ve been waiting all year for this letter to arrive and you deserve to be pampered. Find a quiet room where you won’t be disturbed, because this letter is like a massage for your mind that you won’t want interrupted by your so-called “friends” or “family.” Calgon, take us away!

Christina and I both turned 30 this year, and since neither of us have had midlife crises yet, we’re guaranteed to not die before the age of 60. So we’ve got that going for us, which is nice.

I went to Hawaii in January (again, ugh!) for work. Fun fact: my computer screen looks exactly the same on a desk in Hawaii as it does on a desk in Minnesota.

Gabriel is in kindergarten now. I know what you’re thinking: “Is his kindergarten experience identical to the events in the Oscar-worthy 1990 Arnold Schwarzenegger film ‘Kindergarten Cop’?” Yes. Yes it is. “Get to da choppa!” Ha ha ha.

Gideon had been struggling with eczema and extremely itchy skin, so we put him on a restricted diet, and it has really helped. Basically, we don’t let him eat poison ivy leaves anymore. Sometimes just one as a treat if he’s been really good. It’s so hard to say no to that adorable little boy when he asks “Just one more leaf? Please??”

Gloria’s still around here somewhere.

I went to Park City, Utah in September for work. Fun fact: my computer screen looks exactly the same on a desk in Utah as it does on a desk in Minnesota, except blurrier due to oxygen deprivation.

Christina went to Las Vegas in October with her mom, sister, and Shania Twain. I would tell you what they did there, but what happens in Vegas stays in Vegas.

I bought a 3D printer this spring. A 3D printer is this machine where you feed in money, and it gives you plastic trinkets that everyone asks why you didn’t just buy them at the store in the first place but what they don’t understand is that you do get to feel marginally superior because your plastic trinkets were homemade, until they break, but then you can print a replacement basically for free, as long as you don’t put a monetary value on your time.

We went on a family vacation this summer to Lake Superior and Wisconsin Dells. I would rate our time at Lake Superior as “superior,” and our time at Wisconsin Dells as “dells.” Wisconsin Dells is known for having many outdoor water parks, which, for a city further north than some parts of Canada, is either incredibly optimistic or incredibly short-sighted.

I built a Minneapolis-themed table that is now residing in the art museum at the Minneapolis Institute of Arts. Well, at least until they notice that I put it there.

We went camping again this year. The mosquitoes were so big that even they were making the “state bird” joke. Just kidding, mosquitoes can’t talk. The mosquitoes were so big that they were quite a nuisance and many people complained about them. Boom, roasted!

We’ve really embraced social media. This year, Christina and I tweeted, Facebooked, and Foursquared 4,226 times. That’s an average of 5.5 times per day per person, or in metric, a buttload of wasted time (1.1 Imperial buttloads). It’s easier to understand how much that is with a visualization: If we had instead spent 30 seconds talking to our kids each of those times instead of using our smartphones, then we would be good parents.

Merry Christmas!

Chris, Christina, Gabriel, Gideon, and Gloria