Generating Random Mastery Quizzes with Nothing But LaTeX

Mastery Based Grading can encourage your students to adopt a growth-mindset mentality, help reduce math anxiety, and give students more control over their own learning. But it also seems like it would take SO MUCH OF YOUR TIME. Mastery Based Grading is at the epicenter of the eternal struggle between teacher and student, learning and test-taking, and figuring out how to do everything in just 24 hours a day.

In this article we’ll discuss how to create a simplified, streamlined MBG environment for Calculus based on randomized multiple-choice Mastery Quizzes with embedded coded answer keys generated from (mostly) simple LaTeX documents.

Growth Mindset

What got us thinking about Mastery Based Grading in the first place was this video from Eduardo Briceno about Carol Dweck’s work on growth mindsets vs. fixed mindsets:

If you don’t have time to watch the video, just look at the diagram below from Ameet Ranadive. If a student has a fixed mindset then they tend to believe they are “just bad at math”, and a bad test grade is cause for shame and sadness. Students with growth mindsets see hard problems as challenges, and failures as opportunities to grow their abilities:

The idea that students should think of their educational journey as an ongoing learning process rather than a judgemental evaluation process is great, but to be perfectly honest, in my usual calculus classes I was using a traditional testing structure that is a judgemental evaluation process. The traditional model of “try to do homework, take Test 1, fail Test 1, then start preparing for Test 2 but hopefully do it right this time” isn’t really a growth mindset model, especially when the material on Test 2 is completely different than the material on Test 1. In contrast, Mastery Based Grading basically encourages you to grade students based on their mastery of identified skills, then allows to students to improve on those skills and get re-evaluated, thereby growing their knowledge in a really tangible way.

What is Mastery Based Grading?

Honestly, I think different people give many different answers to this question, and it’s also mixed up with Standards Based Grading, which is another thing but also kind of the same thing. Although everyone seems to do something different, perhaps the main goal is that students are told what they are being graded on and then given ongoing opportunities to level up.

Here is a really simple example of Standards Based Grading in a K12 setting, from TeacherEase:

And here is a really in-depth Mastery Based Grading Rubric from Great Minds which includes very specific standards and very specific mastery levels for those standards:

This job is too hard

At this point I’m starting to panic a little bit. I can’t possibly track this kind of information for every problem, and in fact it’s going to be really difficult even just to break all of calculus down into bite-sized standards that I can then evaluate for mastery and then let students do again and then evaluate again, and really this sounds like a lot more grading, doesn’t it? I don’t think I can do this if it involves more grading.

This is a put-your-own-mask-on-first moment. I need to protect myself and make sure that I’m okay and will survive teaching calculus before I can be a good teacher to my students and make sure that they survive learning calculus.

During my brief time working in industry I sometimes heard people talk about the “80-20 Rule”, which says that you can usually find a way to get 80% of what you want for just 20% of the work it would take to get all of what you want — meaning that the last 20% of your project goal can take 80% of the work. The moral of the story is that you might want to re-evaluate your project goals and ask yourself if 80% of them is actually all you really need.

It’s just a gimmick that in this rule you are pondering the numbers 80/20 for your goals and then the same numbers 20/80 for your work, but this conflation does lead to some of the absolute worst graphs I have ever seen on the internet. Math people, if you ever want a good laugh about terrible pie charts, just Google the 80/20 rule to see gems like these:



MBG without OMG

Here are the five simplified-MBG principles I followed in order to keep my sanity while attempting to start using Mastery Based Grading:

  1. Instead of standards, use the sections of the book.
    It’s probably best to list explicit calculus content standards and then key all your exam and homework problems to those standards, but I figured I could get 80% of the benefit by just using the sections that the book was already divided into. …It’s one of my favorite books, so probably split up how I like it :)
  2. Have a very controlled retake policy built into class time.
    I know from giving various types of Gateway Tests in the past that students can sometimes procrastinate and/or abuse retake policies, and I wanted to have control over that time and process, so I gave assessments only during actual class periods, and at specifically scheduled times.
  3. Make all assessments multiple choice.
    If I was going to let students retake assessments potentially multiple times each, then those assessments absolutely had to be easy to grade. Over the years I think I’ve gotten pretty good at writing multiple choice problems that are actually meaningful, so I decided to again get 80% of what I wanted and make all of the assessments multiple choice.
  4. Avoid having to keep track of versions and keys.
    I most definitely did not want to have to keep track of which students had taken which versions of which quizzes, or to keep multiple keys around for each version of each assessment. To get around this I leaned heavily on my friend randomness, and built each assessment by choosing randomly from a large test bank of problems. I also embedded codes into each assessment so that I could always recover the key from the assessment paper itself!
  5. Figure out how to generate randomized quizzes in LaTeX.
    The key to making the points above happen was to find a way to get LaTeX to generate as many random multiple choice quizzes as I wanted for each section of the book. I know you can do this in Python and then export to typeset in LaTeX, but I wanted to make it happen with only LaTeX. Why? Both so I could just use LaTeX files to generate quizzes, and so that I could share the files with other people; nearly every mathematician knows how to use LaTeX, but not everyone knows how to use Python!

I want to stress that other people are implementing Mastery/Standards Based Grading in a way that is much more comprehensive and thought-out, with much care given to choosing standards and providing quality assessments. I wish I could be more like those people. But for now I am pretty happy with what I’ve worked out, and will be using it in my calculus class this coming semester for the third time.

Lazyman’s MBG in Action

In my calculus-with-precalculus class this spring, students’ grades will be based entirely on their performance on 18 Mastery Quizzes, one for each section of the book we’ll be covering. Students will take these Mastery Quizzes in class according to a schedule, and will also take 10 Retakes of their choice during class periods. In addition they will have four “Group Retake” opportunities (this is new — I’ll let you know how it goes after I find out). Their Final Exams will be choose-your-own-adventure style, where each student can choose to take any 8 Retakes.

For details see the course website, specifically the Syllabus, Homework Calendar, Mastery Quiz FAQ, and Grades FAQ.

At the end of the semester I’ll look at each student’s highest grade on each of the 18 Mastery Quizzes and then determine their course grade as follows:

  • To earn a grade of “A”
    • 3 points on at least 15 of the 18 Mastery Quizzes
    • No Mastery Quiz scores below 2
  • To earn a grade of “B” or higher
    • 3 points on at least 9 of the 18 Mastery Quizzes
    • No Mastery Quiz scores below 2
  • To earn a grade of “C” or higher
    • 3 points on at least 6 of the 18 Mastery Quizzes
    • No more than 3 Mastery Quiz Scores of 1
    • No Mastery Quiz scores below 1
  • To earn a grade of “D” or higher
    • 2 points on at least 9 of the 18 Mastery Quizzes
    • No Mastery Quiz scores below 1

Schematically, that boils down to the following table, where each checkmark represents a score of 0, 1, 2, or 3 on a Mastery Quiz, and the columns show what you would have to do to get into each course grade range. The rightmost column is for the students to put in their own checkmarks so they can see how they are doing:

Of course there are lots of situations that don’t fit into this chart, but this is the aspirational guide for grades of A, B, C, and D. It turns out to be not so difficult to assign grades based on this chart; you just have to assign A-, B+, etc, depending on how close students are to the main grade columns. (Much thanks to Chris Hanusa, who helped me puzzle out how this grading scheme should work!)

Here’s what things looked like near the end of the semester, just after one of the last Retake opportunities. Scores in red indicate which quizzes were chosen by each student. You can see a lot of students finally getting scores of “3” after one or two retakes, but also students who aren’t moving their grades very much. Guess which ones did the homework!

Generating Random Mastery Quizzes with Embedded Keys in LaTeX

Now let’s finally get to the thing that makes all of this possible: using LaTeX to generate random quizzes with embedded answer keys! Without this piece of the puzzle none of the simplifications above would have been possible.

We constructed multiple-choice test banks based on the homework assignments for each section in the book. That way, students know exactly what to study if they want to take (or retake) a Mastery Quiz; they just do the homework assignment for that section (ahem). Here’s what two of those multiple choice questions looked like last semester, when we were first learning about the definition of derivative:

At the bottom of each three-question multiple choice quiz is a code that tells me (but not the students) the answers to the problems, as well as whether or not those problems were used on previous assessments, and the relative difficulty of the quiz. The code has a lot of distractors in it, so it’s pretty impossible to break without inside knowledge, but I also change how it works periodically just in case. If you’re clever about how to construct the code, you can even build in some error-checking. Below the code we reprint the homework assignment, to remind students that to study for any future retakes they need to look at the entire assignment again, not just the problems they missed on the quiz:

This is what it looks like when generating quizzes in LaTeX. Each time you compile, LaTeX will give you a different random quiz. You can also change multiple choice orderings and whether or not answers are visible (for proofreading). In the screenshot below, there happens to be a problem from the test bank that got chosen twice, which obviously is not good! I didn’t know how to avoid this problem in LaTeX, but I could detect when it happened, so I added a warning note at the bottom that appears whenever there are duplicate problems on the quiz.

Using the LaTeX above you just compile until there isn’t a warning (and you’re happy with difficulty level, etc), then print one copy of the quiz. Recompile and print another copy. Repeat until you have enough copies; everyone in the class is taking a totally different quiz, but on the same material. It’s actually very fast to grade these, even though they are different for each student. With 32 students in the class I can grade the entire stack in less than 15 minutes.

Student Survey Results

So what did the students think? As usual, results vary from student to student. Some students found that the consistency and predictability and continuous low-stakes nature of the Mastery Quizzes reduced their anxiety significantly. Others would have preferred to have the standard “three tests and a final” format. Overall I’m not sure students got higher scores, or whether or not they learned more… but the psychology of the class was markedly different. Everything always felt like “I can’t do this… yet“, instead of “I can’t do this”. Students knew they could improve any bad scores, and they knew exactly how to do it. And the Retake system kept students focused on the material they didn’t know how to do (yet!).

Here’s some data taken both in the middle of the semster and right before the end:

Why is this post so long, I just wanted some LaTeX files!

If you want to try this yourself, you can download the LaTeX files here:

You’ll see that there are options for generating “first”, “random”, and “last” quizzes. That’s because the first time students take this quiz as a class, so they all take the same quiz (with questions and answer choices permuted, but the same three questions). After that all retakes are random, and on the final I generate questions from a separate test bank so that students can’t just collect previous quizzes to study for the test.

Please note that I’ve replaced my own rather complicated answer key code with something very, very stupid in this example; be sure to change the way the code is generated at the end of the Generator file before you use these files!

If you have any questions about using these files, please feel free to ask me! I’d love to hear if these files are useful to you, and about how you are implementing MBG in your own classroom. Good luck everyone and have a great semester :)



As an Amazon Associate we earn from qualifying purchases, so if you’ve got something you need to pick up anyway, going to Amazon through this link will help us keep Hacktastic running. Thanks! :)

3D Design Tour with Penny Traps: Tinkercad, Fusion 360, OpenSCAD, and Customizer

Spring semester is coming and we’ll be teaching a introductory class on 3D printing and design. As usual, our first-day 3D print will be a Penny Trap. This model is a good illustration of a design that is possible with 3D-printing but would be impossible with standard subtractive manufacturing methods such as milling. How does the penny get inside?

The answer is that we’ll pause the prints at the right time and drop the penny in, then let the 3D printer continue printing above and around the penny. The “right time” is when the model is about 60% or 70% printed; this ensures that the penny will sit below the printing height of the nozzle, which will help us not damage the machines!

The Penny Trap is a very simple model, and you could make it in lots of different design programs. In this article we’ll walk through how to create this model in Tinkercad, Fusion 360, OpenSCAD, and the Thingiverse Customizer. Those happen to be exactly the same four design tools our students will learn about, so this is kind of a preview of the whole arc of the semester.

Designing a Penny Trap with Tinkercad

First, with Tinkercad, you can drag and drop shapes and cut out “holes” from some shapes using other shapes. You can read about this at the MakerHome tutorial Designing a Penny Trap with Tinkercad, and tinker with the model itself in Tinkercad.

Designing a Penny Trap with Fusion 360

With a little work you can use Tinkercad to make nice rounded edges on your model, even in the “portholes” of the Penny trap. But if you know how to use the more advanced modeling software Fusion 360 then that process is much easier. Getting started witih Fusion 360 is easier than you think; if you’re interested in getting started then I suggest the excellent CAD for Newbies videos by Maker’s Muse. In Fusion 360 you can easily Create a Cube, move it to the origin, and then Create a Sphere that cuts through the Cube:

Just by pressing the “F” key you can access the Fillet tool, which you can use to round the edges of your model as much as you like:

Fusion 360 has a steeper learning curve than Tinkercad, but it pays to learn it so that you can make use of advanced tools like Fillets, Lofts, and Sweeps. Alternately, you can now import basic Tinkercad models into Fusion 360 and then apply features such as Fillets; you can read more about that process at the Tinkercad Blog and at our previous article Filament Samples and Customizability.

Designing a Penny Trap with OpenSCAD

With the code-based design software OpenSCAD, you can use simple code to place, rotate, and take “differences” of objects to make the Penny Trap design. You can read about this at the MakerHome tutorial Designing a Penny Trap with OpenSCAD, and take a look at the actual OpenSCAD code.

Designing an Interactive Coin Trap Model for Thingiverse Customizer

Finally, we can extend our OpenSCAD model to make it customizable for other users that want to create different-sized coin traps. One of the great things about designing models in OpenSCAD is that they are parametric, which means that you can change features of the model very easily by modifying the values of its input variables. In the case of the Penny Trap, this means that we could write code that creates “traps” for any type or size of coin.

By adding certain comments to our OpenSCAD code we can extend it to a user-friendly parametric slider interface on the Thingiverse Customizer, creating some Customizable Coin Traps:

Using the Customizer interface, people can can create traps for coins from all around the world, or select their own unique coin size:


To see how we extended our OpenSCAD model to this Customizer model, you can download the code from the Thingiverse model and compare it to the code in the OpenSCAD tutorial. Here’s a snippet so you can see how the OpenSCAD comments turn into variable names and drop-down menus in the Customizer image above:

Coin traps are a great first model to make in any design software, as you learn the ropes. Throughout this semester our students will follow this same series of design methods, starting with Tinkercad, then learning Fusion 360 and OpenSCAD, then extending your models for the user-friendly Thingiverse Customizer. All student work will be submitted in public blog posts, so if you want to see what the students create, check out our ISCI 104 class website in a few weeks!



As an Amazon Associate we earn from qualifying purchases, so if you’ve got something you need to pick up anyway, going to Amazon through this link will help us keep Hacktastic running. Thanks! :)

Back It Up: A Guide to Protecting Your Online Content

Companies come and go, especially online. Data gets lost, start-ups don’t get past start, and businesses get bought out or go belly-up. Changes sometimes happen quickly, and your online content could go out the window without warning. So, if you post or publish your work online, forget New Year’s resolutions… instead we have an end-of-year resolution:

        Back up your online content before New Year’s Eve!          

Creating local copies of your online content is tedius but easy. In this post we’ll go over some best practices for making end-of-the-year backups so you can be protected in case something goes sideways online. Hold on to your hats and grab a cup of tea, because there’s a lot you might need to back up if you haven’t done this before…

I can already tell this is tl;dr

This post is gonna be long, so maybe you just want to jump down to the main sections on how to back up your work from: Thingiverse, Shapeways, Etsy, YouTube, WordPress, or Twitter?

Do I have to?

Let’s consider just one online platform to start: Thingiverse. I have hundreds of models uploaded there; for example, this parametric model for constructing Customizable Furniture Minis (handy if you’re moving into a new apartment and want to see how your furniture might fit):

The online content for each “Thing” on Thingiverse includes STL files, images, text descriptions, tags, analytics, and more. This particular model has also lots of sample STL files, as well as an OpenSCAD code file that runs the Customizer so people can create models that are sized like their own furniture. That’s a lot of downloadable content that I’m keeping up on Thingiverse:

Do I have all that content somewhere locally? Well, I have all the STL files somewhere on my computer, and all the images are in my phone’s photo collection… but everything is mixed up. Which of my local STL files are the ones that I uploaded to Thingiverse? What code did I upload for the Customizer, and did I modify it later or is it still the same? Which photos from my camera roll are the ones that I thought had the best angles or lighting, and what month did I take those photos, and where the heck are they? I don’t have the text description or tags saved anywhere since I typed those directly into Thingiverse; and I don’t have a local up-to-date record of the analytics of how many people liked or downloaded this model.

So here’s the question: If I woke up one morning to find that Thingiverse had suddenly disappeared (excuse me while I hyperventilate for a second just for typing that), how the heck would I put all that back together again?

You might be thinking that it’s pretty unlikely that you’d have to deal with such an emergency, but consider that Thingiverse is owned by MakerBot, who famously suffered numerous rounds of CEO changes and layoffs (including from the Thingiverse team, ahem) after being purchased by Stratasys a few years ago, and whose new printer is geared for professionals and industry, not makers. Who knows what the future will hold?

Consider also what recently happened at Flickr, the online photo hosting service that was purchased by SmugMug earlier this year. For users on the “free” plan, the previous limit of 1TB of storage was reduced to just 1,000 pictures. Here’s what The Verge reported about how this change would be implemented on Flickr:

“Free users with more than 1,000 photos or videos will have until January 8th, 2019, to upgrade to Pro or download their surplus content. After January 8th, free users with over 1,000 pictures or videos won’t be able to upload any more. And on February 5th, 2019, free accounts that are still over the limit will have their content actively deleted until they’re back under 1,000 (starting with the oldest content first).”

This is pretty real if you’ve got a lot of content on Flickr, especially if you don’t notice before February and your photos start being deleted! Frankly this is kind of a best-case scenario, since users have time to prepare and probably get a lot of emails pushing them to upgrade to the paid service before their content is deleted. If a company went under then things could be a lot worse, with no notice at all! Okay, now that we’re sufficiently terrified, let’s do this thing…

Backing up Thingiverse

Backing up “Things” on Thingiverse is a two-step process. First, use File / Save Page As to save a local copy of the webpage for the Thing. (Note: All the instructions in this article are for Chrome on a Mac.)

Make sure that you choose the Format “Webpage, Complete”. This results in an .html file that you can open locally from your computer, and a folder that contains all the images and data needed to display the website. All images in your Gallery will be in this folder in both thumbnail and display-quality sizes, even those that aren’t visible from the webpage when you save. This only saves the main page of your Thing, and if you click on any links from this page they will link to content online, not locally.

The second thing you need to do is save your model files. To do this just click the big blue “Download All Files” button, to get a .zip file that contains attribution card, license, and of course all the STL, code, and design files you uploaded to the site. It also includes display-size copies of all the images for your Thing, so if you don’t need the descriptions and tags for your models then this one step might be all you need to do.

Warning: Make sure you wait long enough after saving the page before navigating away, closing the window, or saving model files. It can take longer than you think to save the complete website, and doing any navigation can mess up the process. If you’re not sure whether or not something got messed up, just open the .html file and check.

If you have a lot of files and want to be able to double-check that you have everything, then you may want to rename your .zip files to have spaces instead of underscores. That way your files will appear in neat sets of three when you order by filename, and you can easily check if anything has gone missing:

You may be thinking that it’s better practice to change spaces to underscores than the other way around, and I thought so too… but it turns out that doing things that way causes some problems when you try to open the .html files locally, I think because the the folder name is no longer what the .html file expects. To change underscores to spaces in your .zip files in one batch from the command line, get to the directory with your files in it and then run this (thank you Stack Exchange and @rileypb):

for file in *.zip ; do mv — “$file” “${file//_/ }” ; done

Alternately you could just make a folder for each Thing and put the .html file, .zip file, and data folder into that Thing folder, or even just leave it all a big jumble and pick it apart later if catastrophe strikes.

I also wanted to keep a record of the order that my Things were uploaded to Thingiverse, so I needed to save the very long infinite-scroll page that lists all of my designs, which starts like this:

As you scroll down, the page loads new content to continue the list of designs. If you scroll all the way down and save then the upper content will not be saved, and if you don’t scroll down then the lower content will not be saved. The solution is to go to your Thingiverse Settings and change the “Use pagination instead of infinite scroll” toggle to “Yes”, so that you can save one page of designs at a time and eventually capture everything. The same technique comes in handy if you want to save your Collections.

If you’ve got content on other online 3D model repositories, like Pinshape or YouMagine, then you can back things up approximately the same way. Just back up whichever repository is your usual go-to, and don’t worry about the rest, since you can probably use the same data to recreate content on any 3D model site.

Backing up Shapeways

The 3D printing service and marketplace Shapeways seems relatively stable, and got a new CEO and Series E funding this year, but changes there have been fast and furious recently. What if some future shift in business plans causes changes that affect the Marketplace or your Shapeways Store? I hope not, but best to be backed up just in case!

Backing up from Shapeways is pretty much just like backing up from Thingiverse, except that recent changes on the site make it more difficult for you to download your actual model files. The first step is the same, though: navigate to one of your product pages and use File / Save Page As to save a local copy of the complete webpages and files.  This will save all featured images and your description, tags, and the price for printing in the default material.

To quickly see what files are used in your product, scroll down to the Details panel and look at the “What’s in the box” information. To download that file, go to your 3D Models list and search for that name, then click on the vertical dots and choose Download. Remember that if your model has different Variants then you may have to download multiple files.

Rather than mess with filenames, this time I just made a folder for each product and put the data folder, .html, and model files into that folder:

If you’ve got product files on iMaterialize, MyMiniFactory, or any other commercial 3D model repository, then you can follow a similar process to archive your work for the year, as needed. Probably you’ll only need to do it once, for the service that you use the most — unless you tend to post different types of things on different sites.

Backing up Etsy

I only have one thing on Etsy right now, but I backed it up just in case. Again, just by selecting File / Save Page As, to get the listing data and images:

From Etsy there are no files to download, because orders to Etsy are filled by you shipping actual items from your own inventory. However there are a lot of listing flags and properties that wouldn’t be fun to remember if Etsy somehow lost all your data, so I think the best practice is to choose Edit from your product page and then save the actual “Edit Listing” page as well:

Backing up Sketchfab

Models you upload to Sketchfab can be viewed in 3D/VR mode and embedded in Twitter, Facebook, and even here in WordPress (click the play button to see the live model!):

I’d like to be able to download my 3D/VR images from Sketchfab to back them up, but there doesn’t seem to be a way to do that. Saving the website doesn’t work in any of the ways that I’ve tried, and there does not seem to be a way to download the 3D view of a model. You can “Share” a model, which effectively sends a link or an embed with a link to email, Twitter, etc, but that doesn’t give you a local copy of the 3D visualization. I guess it only works at the Sketchfab site or through their API, which kind of makes sense. If you know otherwise please let us know in the comments!

Backing up Tinkercad

You all remember when Tinkercad went away, right? Those were bleak times… until Autodesk saved the day and made it live again (see the article Tinkercad is Back! Autodesk is buying it from 2013). Since then, Autodesk has taken great care of Tinkercad, and even this year has made major updates. I’ve got hundreds and hundreds of models and experiments on Tinkercad, from the serious to the silly:

We hope that Tinkercad will be here forever, but if something happens… there’s probably nothing we can do. There doesn’t seem to be a way to back up your Tinkercad files, and that makes sense because you would need to have Tinkercad to open and edit them. You could download the STL files for each of your models, but that wouldn’t preserve your Tinkercad groupings and edits. Like Sketchfab, we’re just going to have to cross our fingers on this one.

Backing up YouTube

If you’ve got videos on YouTube then you probably have local versions from when you shot or edited the video, but it’s nice to know you have all your videos in one place in exactly the right versions, in case something goes wrong online. For example I have about eight videos on my phone and in iMovie that look something like the one below, but this edited version is the one I would want to repost if something happened to my channel:

Luckily, backing up videos from your YouTube channel is easy, because YouTube is owned by Google. Just go to Google Takeout and choose “Select None”, then turn on the very last toggle to select YouTube for backup.

Google will ask you to set some preferences about the archive it will create, then after processing for a few minutes will give you a button to press for downloading a .zip file of all your videos. After you download and unzip the archive, you will see copies of all your videos, as well as .json files that include descriptions and other data, and even a list of all the comments you’ve made on videos and your search and watch histories (!).

Prepare for this archive to be big if you have any significant amount of content! My channel only has a couple dozen very short video clips, and with just that my archive was nearly 1GB. If you’ve got content on Blogspot/Blogger then you can use this same method to create an archive, because Google owns that too.

Backing up WordPress

There are three types of backups that I suggest for online blog content. First, if you have a WordPress blog (like this one!), then you should already be creating backups at least every once in a while when updates occur.  How you back it up depends on where your WordPress is hosted; we have Hacktastic on our own server, so we back up from there. The WordPress Codex has information about backups in general, and there are also lots of WordPress plugins for auto-backups.

However you do it, you likely will get a zipped archive that contains all sorts of data about your site including uploads, themes, and settings. You can use this backup to reinstall an instance of your site, if needed. But the content is difficult for a human to look at, as most of the information is in an .sql database:

This is great, but what if you wanted to be able to view your articles and maybe copy them into another website or blog? This is the second type of backup that I suggest: open each of your blog posts and pages and save the content with File / Save Page As. This will save all text, image, and formatting so you can see exactly how your articles looked, and cut and paste from them if needed.

I’ve sunk so much time into writing detailed blog posts that I did both of the two types of backups above not only for my current blog Hacktastic and my website here at, but also for my old print-something-every-day-for-a-year blogspot/blogger site MakerHome. It’s taken forever to make all these backups, but I’m consoling myself by remembering that next year I’ll only have to worry about backing up the one year of content I generate in 2019.

The third type of backup I suggest is to make local copies of articles you write for websites you don’t control. For example, I’ve written a few education-focused articles at Ultimaker Education, and a huge number of technical articles at Shapeways Magazine, like this one about repairing Structure Synth models:

I could back these articles up by saving their complete web pages as above, but if you have a WordPress site then a different strategy can be even more useful: copy and paste the articles into your own WordPress site so that you have complete copies with editable text and images. You can make the posts visible or not on your blog, depending on what your copyright agreements are. Here’s how the article above looks when saved into Hacktastic for safekeeping:

There is something you need to watch out for with this method, which is that if you just do a straight cut and paste, then the images on your version of the article will just point to their original locations at the other site where your article is hosted. If you want to have a truly secure backup then you need to change that, so that local copies of the images are stored in your WordPress database. Otherwise if something happens to the external site then all of your images will become broken and you will have no way to update or fix them.

Luckily, there’s an app for that! Or more precisely, a WordPress plugin, called Image Teleporter. When you activate and set up this plugin and then save any post on your blog, Image Teleporter will scan it and identify any images that point to other websites. Then it will download those images to your own WordPress image database, and update the links so that they point to your copies. (Obviously you should only do this with images for which you have permissions or ownership!) This plugin saved me an immense amount of time and heartbreak, and I heartily recommend it.

Backing up Twitter

I’m not sure that I’d ever want to repost or recreate my Twitter posts if the service ever disappeared, but I do want to be able to preserve the ability to look things up in my past Tweets and conversations for reference. So just in case, let’s back that up as well.

Go to Profile and Settings and scroll down to “Your Tweet Archive” to request an archive of all the Tweets you’ve even Tweeted. In just a few minutes Twitter will email you an archive that you can download. That’s all!

Some people have had problems receiving their archives in their email, so here are some tips for troubleshooting that problem. First of all, the email will have the word “Tweet” in it, but not the word “Twitter” (although it’s from Twitter), so you may have to use “Tweet” if you are searching for the archive in your email. Second, you need to make sure that your Twitter settings allow email notifications (thank you @SteveStreza). Second, you may have to “wake up” Twitter email notifications by changing the email in your Twitter Profile, confirming that change, and then changing the email back again. This second thing actually solved the problem for me (thank you Stack Exchange).

Your Twitter archive will be linear, with Tweets and Retweets and Replies listed in chronological order but not threaded:

And I know, I’m a dinosaur and should probably be using Instagram instead of Twitter… but I’m not. If you are, then say thank you to Tech Crunch, who just this year convinced Instagram to allow its users to download all their images using a Data Download tool.

Everything Else

Of course you should also back up your email and online cloud storage. Gmail and Google Drive data can be archived using Google Takeout (see this Lifehacker article for how to view your Gmail .mbox files if you ever need to), and Dropbox can be backed up just by downloading all your files to a local folder on your computer (select them all at once to get a single .zip file; thanks CNET). Personally you may also need to back up photos that you keep on Flickr or Shutterfly, or music that you keep on Google Play or Apple Music. One last final stretch… what else do you have out there? Anything on Ravelry, Squarespace, Soundcloud, GitHub? If you’re on a Mac, make sure your Time Machine is set up. Some people might even consider a paid online cloud backup service like Backblaze or IDrive, or putting backups on Google Drive or Dropbox.

Storing Physical Backups

My personal preference for end-of-year backups is to put them on physical media that I can store in a firebox. All of my backed-up content put together (not including Gmail) is about 6GB , which sounds like a lot… but for less than $15 you can get a 64GB USB thumb drive:

Or, for less than $50 you can get a 1TB external hard drive and back up all of your local and online digital content at once. After backing up your content to a physical drive you can lock that drive in a waterproof/fireproof box for safe keeping for less than $40. Think of this “firebox” as the black box in an airplane; even if your house burns to the ground, your firebox and everything in it will still be intact. While you’re at it, keep your analog content safe too by putting your birth certificate, social security card, and other important papers into that box!

Once everything is backed up and stored away safely, raise a glass. It’s a new year, and time to start thinking about what all the new content that you’ll be creating :)


As an Amazon Associate we earn from qualifying purchases, so if you’ve got something you need to pick up anyway, going to Amazon through this link will help us keep Hacktastic running. Thanks! :)

Perko Knot Reprint: Dissolvable vs. Breakaway Supports

Round 0: Dissolvable Supports

When the Ultimaker 3 came out a few years ago, we were really excited about the prospect of water-dissolvable supports. Imagine printing your model and then just letting the supports melt away in water! It sounds too good to be true, but it does work pretty much just like that, except for a some messy goopy things that happen along the way. To show off the power and usefulness of dissolvable supports we created a difficult spiky model that really needed those dissolvable supports, our Giant Spiky Perko Knot.

We printed the knot in Ultimaker Orange PLA, with Ultimaker PVA dissolvable support material. It was kind of a rough journey, especially with the “prime tower” that helps transition between the two different materials; you can read the whole saga at our original Giant Spiky Perko Knot article. Here’s how it looked when everything was said and done:

You can download this model from Thingiverse at Giant Spiky Perko Knot if you want to try printing it yourself! It’s not so bad at a normal size, but printing a huge one can cause all kinds of issues, no matter what kind of support you use.

Cat-astrophe :(

So life was fun, life was great, until our little gray cat Sackett decided he wanted to sit on top of the bookshelf where we kept our giant spiky orange knot, and…

This model had taken SIX DAYS to print, and plenty of filament and heartache. But it was one of our biggest and best models to bring to shows and conferences, so we had to try reprinting it. Trying to look on the bright side, we had to admit that our original model had some problems that maybe we could try to fix the second time around. Specifically, we had a lot of problems getting PLA to adhere properly to the dissolvable support material, and during the original print a lot of the teeth along the bottom of the model didn’t print correctly, or just fell off:

In addition, dissolvable support material is really expensive… and we had this unused spool of “breakaway” support material we had never tested…

Round 1: Underextrusion and Not-So-Breakaway

For our first reprint attempt we used Matterhackers Orange Pro PLA with Ultimaker BAM Breakaway support material. We got about halfway through the print before the orange stopped extruding for some mysterious reason. Click on the text in the Tweet below to open the entire thread of how things progressed including photos and video along the way:

Breakaway supports are exceptionally great at leaving a clean finish, but they are still very strong and hard to cut through, tear off, and remove. I’m actually glad this first reprint failed because I don’t think I ever could have extracted the knot from this diamond fortress:

Round 2: Interface and Out of Bounds

At this point we thought it might be good to economize. For our second reprint attempt we used the much less expensive filament Matterhackers Lime Green MH Build Series PLA, and went back to our good friend, Ultimaker PVA dissolvable support material. PVA is very expensive, but we only used it in the “interface” between the knot and the main supports, in the hopes that not much would be needed even for this very large model. We wrote about this on-the-cheap method for using PVA in our previous article Dissolvable Support Interface is Everything You Need. Click this Twitter thread to see how things went (spoiler alert – it doesn’t go well):

This time what stopped us was an unexpected “outside of normal printer volume” error. I have to admit that I scaled the knot up as large as I possibly could in Cura for this print, re-rotating and re-placing the knot until it just barely fit on the build platform. Cura let me do it, and managed to slice it, but I must have been just one tiny tooth over the line somehow, alas.

We did try to dissolve the interface support on the resulting partial print, but it didn’t work as well as we had hoped. The model and supports are just so dense and twisty that the water couldn’t effectively get to the interface to dissolve it. We didn’t have enough of the expensive PVA to do a print with full dissolvable supports, so we went back to breakaway…

Round 3: Breakaway and Elbow Grease

For our last (and ultimately successful!) print, we used Matterhackers Yellow Pro PLA and Ultimaker BAM Breakaway filament. This time we reduced the amount of support and switched to “zig-zag” instead of the diamond/cross-hatch pattern that was so impossible to remove in Round 1. In retrospect we really should have done the breakaway just in the interface, but here we used it for all of the supports. Click on the text in this Twitter thread to see the print from start to finish, with videos and photos along the way:

Taking off the supports took many days, and it was a serious and literal pain. Here’s just a piece of the process, in which we get some serious new snips from the hardware store, find our flush cutters, and then pull off part of a tooth by mistake:

But after an unreasonable amount of work that I do not care to repeat, in the end the breakaway supports delivered what was promised: an absolutely beautiful separation from the print, with no damage at all to the surface finish:

And here’s our new girl, cleaned up and ready for the next show:



Hey I 3D printed a giant spiky knot and you can too. To see how we designed it in the first place and then printed with dissolvable supports, check out our previous post, and to see how we reprinted the knot with breakaway supports, just scroll up :)

You can download the STL file from Thingiverse:

You can also order 3D prints of various Perko-related things at my geekhaus Shapeways shop:




As an Amazon Associate we earn from qualifying purchases, so if you’ve got something you need to pick up anyway, going to Amazon through this link will help us keep Hacktastic running. Thanks! :)

Just in Time: Clocks!

Also published at Shapeways Magazine

Need a last-minute gift for a special person on your holiday list?  You can create a unique, custom 3D-printed clock with just a little bit of design knowledge and an inexpensive battery-powered clock kit like this $8 Youngtown Silent Clock Mechanism with Small Hands:

You’ve got from now to the second week of December to get a 3D design together, if you want to order a 3D print before the Shapeways Material Cut-Off Dates for the holidays. In this post we’ll show you how you can create a custom 3D-printable clock face with three different software programs. Don’t have time for that? Skip to the end to see how you can customize a retro clock very quickly with our Sunburst Clock Maker.

Beginner: Tinkercad

Even if you’ve never created a 3D design before, it’s easy to get started with Tinkercad, a free in-browser 3D design tool with a simple drag-and-drop interface. To get started, sign up for a free account and check out the All3DP video Getting Started in Tinkercad: A Tutorial for Complete Beginners. Once you know a few Tinkercad tricks, you can create complex designs from very simple combinations of shapes; throughout this post we’ll link to helpful YouTube videos to show you exactly what you need to know.

To make a simple clock in Tinkercad, we’ll start with a cylinder for the center face, and then create a couple of stretched-out rings with Rotated “Round Roof” shapes and Holes:

By using the “Control-D” duplication tool we can copy and rotate those rings in a pattern around the cylinder. After modifying the heights of each shape with the Ruler, we get a simple retro clock face design:

If you want to pick apart our Tinkercad design and see how it works, just open this Quick Clock link and tinker for yourself! Add some Text for numbers, if you like, or design something new from scratch. When you’re ready to download your design for 3D printing, click the “Export” button and then choose “Export as STL”.

Intermediate: Fusion 360

To make a fancier custom clock, try Autodesk’s Fusion 360 3D software, which is free for students, educators, and hobbyists. There’s a steeper learning curve to get started in Fusion 360 than there is with Tinkercad, but there are plenty of video tutorials online to help you learn. Some of the best are the Fusion 360 tutorials by Maker’s Muse. We’ll link to relevant video tutorials throughout this section so that you can learn just what you need. Fusion 360 is a very powerful program with a lot of features and tools, but you only need to know how to use a few of those tools to make a simple clock!

For example, if you know how to create a Sketch, add Constraints, and use a Circular Pattern, then you have all the tools you need to create a 2D shape for a clock face design in Fusion 360. To create the example below we started a Sketch, added a Circle at the origin, then formed spoke shapes with Lines. We kept the shapes symmetric by using Constraints, and rotated them in a Pattern around the origin. In the screenshot below we are in the process of duplicating and rotating the thinnest spoke to create twelve copies of it around the center circle:

Most models in Fusion 360 start from a two-dimensional Sketch like the one above. Once you’re done with your Sketch you can Extrude to give it some three-dimensional depth, and then Fillet the edges to make them rounded and professional-looking:

To download your model for 3D printing, right-click on the gray name of your model in the Browser menu (if you haven’t saved your Fusion 360 design yet, then the name of the model will be “(Untitled)”, as it is in the screenshot above). Select “Save as STL”, click “OK” in the new window that pops up, and save the STL file to your computer.

Advanced: Make ALL THE CLOCKS

Feeling more ambitious? With some parametric design you can write OpenSCAD code to generate billions of clocks, each from a random seed. For example, consider the many types of retro-styled “Sunburst” or “Starburst” clocks shown in this Google Image search:

Clocks like these were inspired by the modernist-style work of industrial designer George Nelson, who made many variations of such clocks in the 1950s. There are some common design features that are shared by most of these clocks: geometrically-shaped spokes, a star/sunburst pattern, a circular inside for the hands… Here’s what our first notes looked like when we started thinking about the typical parts and designs for Sunburst Clocks, and some of our early test prints:

OpenSCAD is a free code-based design software that works on any platform. With just a little bit of coding knowledge you can write simple code to describe a library of geometric spoke shapes, and then options for rotating those shapes around a central circle. There are literally billions of configurations; here are just a few:

If you want to learn more about OpenSCAD, check out our beginner’s video tutorial PolyBowls – A simple OpenSCAD code walkthrough and intro document Hello OpenSCAD. The “Hello” document has a link to sample code you can inspect and modify; if you want to play around with the code that made the clocks in the rotating image above, you can download it from our Thingiverse page.

The Easy Way Out: Customize a Sunburst Clock

But… you may be thinking… there is NO TIME FOR THIS!! The holidays are coming fast, and you don’t have time to learn how to write parametric OpenSCAD code right now? No problem, just use our Customzier to design your own retro clock! We’ve made our design free on Thingiverse so you can create unique and interesting Sunburst Clocks in just a few seconds. Just go to the design on Thingiverse and click the “Open in Customizer” button to get started (you’ll have to sign up for a free Thingiverse/MakerBot account to open the design in Customizer):

The Customizer version of the Sunburst Clock design lets you create new clocks just by clicking in the Random Seed slider and selecting design options from drop-down menus. You can also set the overall shape and size of your clock, and control the center hole and backing to match your clock kit:

Once you have the clock you want, click the “Create Thing” button and download the STL file from your list of Things within Thingiverse. Here is a design we made with the Customizer and had printed at Shapeways in White Versatile Plastic for less than $30 (it’s the “Cordelia” design), together with the clock mechanism we’ll use to assemble the final clock:

After assembly, the clock looks like this:

And here’s an “action” shot on the wall:

Light Speed: Order an Existing Design

If you’re really down to the wire and don’t have time to create or customize your own design, then quickly head over to the Shapeways Marketplace for a huge selection of unique 3D printed gifts that you can order right away. If it’s before the December 13 cutoff date for medium-sized White Versatile Plastic at Shapeways, then you still have time to order, with next-day shipping and priority manufacturing, one of our best twelve pre-made retro clock designs from the geekhaus shop, like the Velma:

Happy making, and happy holidays!



As an Amazon Associate we earn from qualifying purchases, so if you’ve got something you need to pick up anyway, going to Amazon through this link will help us keep Hacktastic running. Thanks! :)

The Snowflake Machine

The Snowflake Machine uses random numbers, mathematical algorithms, computer code, and SCIENCE to create well over a billion unique and beautiful snowflakes. It’s a customizable design available for free on Thingiverse, and people around the world have already used it to generate almost four thousand unique snowflake models!

After going to the Thingiverse link, press “Open in Customizer” to get started. You’ll be able to choose a random seed value and then set various style parameters to control the branchy-ness, organic-ness, fuzziness, and length of your custom snowflake:

What can I make with the Snowflake Machine?

You can make snowflakes! Specifically, you can:

  • Quickly generate 3D-printable snowflakes using a random number seed
  • Use sliders to control the style and look of your snowflake in ten different ways
  • Create snowflake ornaments by selecting a hanging loop feature
  • Create giant snowflakes with lots of detailed design steps
  • Create micro-flakes, if you have an ultra-fine nozzle! (More on that soon…)

There are also demo snowflakes available to download as an STL files in the Downloads section, but it’s more fun to make your own!

How to Operate the Snowflake Machine

Here’s what to do:

  • Go to The Snowflake Machine in Thingiverse
  • Press “Open in Customizer”
  • Choose seed and style settings
  • Click “Create Thing”
  • Wait 2-3 minutes for the magic of creation to take place
  • Go to your list of Things and reload it until your new snowflake appears
  • Download, 3D print, enjoy, take a picture, post a Make
  • At this point there will still be over a billion more snowflakes to make, so keep going

How does the Snowflake Machine work?

The Snowflake Machine generates snowflakes with an algorithm that approximates the way that some kinds of snowflakes grow in real life.

Stellar plane crystal snowflakes start from a hexagonal prism seed and then grow outward with branches and plates whose size and positions are determined by the temperature and humidity of the atmosphere.

To mimic this process, the OpenSCAD code behind the Snowflake Machine generates sequences of random numbers based on a random seed that you select, and then grows a snowflake design by adding branches or plates in each step. The random number sequences and the style parameters whose values you select with the Customizer sliders act like the temperature and humidity of the air around the snowflake, making it more or less likely that different formations will be generated.

Tips and Tricks for Snowflake Design

Here is some advice for getting the most out of the Snowflake Machine:

  • Once you set a seed, you can change style sliders to alter the look and feel of the snowflake. Or you can change the seed again to generate more random snowflakes whose formation patterns are governed by your style slider settings.
  • If you like a particular seed, then write it down so you can come back to it later! Once you change the seed value your old seed will be lost forever, like a melted snowflake.
  • Mathematically perfect snowflakes (with “organic” set to zero) generate more quickly and also print faster. But snowflakes with a random/natural look (with larger “organic” parameter values) look more realistic and stylized.
  • Snowflakes with six steps and medium style settings will be approximately the size of the orange preview circle. You can go up to 11 steps, but the snowflakes usually look best when they have between 4 and 7 steps.
  • The best way to change the target size of your snowflake is to set the “target_diameter” parameter to your desired size. This will change the size of the orange target circle, and adjust lengths and widths accordingly in the algorithm.

It’s worth keeping in mind that sometimes things look good on the screen but don’t come out exactly how you expect when they are actually printed. If you keep track of your seed values, then you can iterate your design and make it better. Below is a photo that illustrates such an iteration, with the initial design on the left and the updated design on the right. Based on the outcome of the initial design, I turned down the “organic” and “fat” parameters and increased the “fuzzy” and “sharp” values to get a cleaner and more detailed design.

It’s a little bit difficult to see snowflake details in the small Customizer window within Thingiverse. If you’d rather work with a larger, faster preview then you can download a free copy of OpenSCAD, get the snowflakerator.scad file from the Downloads section of this Thing, and then generate random snowflakes directly in OpenSCAD. To do this, you modify the parameters in the editor on the left-hand side, and then press “F5” to see the result. It looks like this:

Don’t have a 3D printer, or want something fancy?

Custom snowflake designs made with the Snowflake Machine are now available in the Snowflake Collection at the geekhaus Shapeways store, like this set of six organic ornaments:

You can also order tiny frosty snowflake earrings:

But remember, you can just go to the Thingiverse link and design and 3D print your own custom snowflakes for free :)


Go to The Snowflake Machine on Thingiverse and press “Open in Customizer” to generate your own custom 3d-printable snowflakes for free! Or check out our Snowflake Collection on Shapeways if you want to order some pre-made designs. Happy Holidays!



As an Amazon Associate we earn from qualifying purchases, so if you’ve got something you need to pick up anyway, going to Amazon through this link will help us keep Hacktastic running. Thanks! :)

Knots in OpenSCAD with Sweeper

This week we created a special collection of 3D knot models based on some old projects we did with students a few years ago. To recreate these knots we used our old data to recode each of the models in a consistent way in OpenSCAD. This year’s version of the knots are scaled and sized to form a matching set suitable for printing on SLS printers like the ones at Shapeways. This means that we can have fancy, colorful Nylon Plastic versions of all our favorite knots, and even print a few in Steel.

We’ll post pictures when the models return from Shapeways in a week or two, but for now here are a couple of nice renders, of a Hyperbolid Stick Knot and a Lissajous Three-Twist Knot:


OpenSCAD “Sweeper”

Knots are basically just closed curves in space, and the easiest way to create a closed curve in OpenSCAD is to “connect the dots” — that is, to create a list of points in space, place a small sphere at each of those points, and then connect each sphere to the next. If you only have a few datapoints then this method is perfectly acceptable. In the example below there are just eight points that need to be connected, so this method isn’t so bad.

This “connect-the-dots” method is simple, but with more points, as you would have if you were sampling close-together points to connect and make a curvy path in space, this way of generating a curve in space is really, really, really slow. Each pair of connected spheres costs a convex hull calculation, which is a very computationally expensive operation.

Luckily, there is a smarter way. The “sweeper” code library in OpenSCAD takes a sequence of datapoints on a curve and constructs one huge polyhedron from that data. At each point the sweeper code places a cross-sectional shape like a polygonal circle or a square, oriented in the direction of the curve. Then it connects successive cross-sections with faces, and puts the whole thing together with OpenSCAD’s polyhedron command. The code is a lot harder to follow than the method above, but for the most part you can ignore it and just put in your datapoints. Here’s what it looks like in action:

In the code above, notice that we define a function “f(t)” that parametrically describes the knot in space; the sweeper code samples points on this curve to get the data it needs to build the curvy polyhedron. You can get a copy of an OpenSCAD document with the required libraries (scad-utils and list-comprehension) for sweeper from the shared code files included with our Hello OpenSCAD primer.

The Special Knot Collection

The ten knots we decided to make for the new Special Knot Collection are the knots 3_1, 4_1, 5_1, 5_2, 6_2, 8_19, 10_161, and L6a4, as listed in the Rolfsen Knot Table. These knots are listed below, together with links to those knots on Shapeways, and links to blog posts that contain more information about each knot and why it is significant.

If you want to learn about mathematical knot theory, two great introductory books are The Knot Book by Colin Adams and An Interactive Introduction to Knot Theory by Inga Johnson and Allison K. Henrich. If there’s a special knot you’d like to see us add to our collection, please let us know!



As an Amazon Associate we earn from qualifying purchases, so if you’ve got something you need to pick up anyway, going to Amazon through this link will help us keep Hacktastic running. Thanks! :)

Hinged Triangle-Square

One of our favorite 3D designs is a model of Dudeney’s famous hinged dissection of a triangle to a square, also known for some reason as the Haberdasher’s Puzzle. Today we’ll revisit this design and update it for printing on SLS machines.

We designed our original triangle-square model a few years ago with OpenSCAD, using data from an article by Mark Meyerson. You can read more about the original design on our old blog MakerHome, and download a free 3D-printable model on Thingiverse:

The triangle-square is a surprisingly reliable model for printing on a desktop 3D printer, considering that it prints all in one piece with hinges completely assembled. The hinges are the same as the ones on our Fidget Star and Fidget Cube, but on the triangle-square the hinges are more reliable because they all point in the same direction and don’t form overhangs. I’ve had the best success with these at .2mm layer height on a MakerBot Replicator 2. You can make a lot of triangle-squares fairly quickly with a high success rate.

Since we made that model, some mathematical advances were made about hinged dissections! Specifically, in 2007, Eric Demaine and a team of authors proved that any finite collection of equal-area polygons has a common hinged dissection! In other words, as they put it, “for any such collection of polygons there exists a chain or polygons hinged at vertices that can be folded in the plane continuously without self-intersection to form any polygon in the collection.” (!!)

For more information on a wide variety of dissections, check out Frederickson’s book Dissections: Plane & Fancy, as well as his books on Swinging and Twisting Hinged Dissections and Piano-Hinged Dissections, or his book on Ernest Irving Freese’s Geometric Transformations. In the future we hope to adapt our model to other interesting hinged dissections!

In the meantime, we do have a da Vinci Color printer and thought it might be nice to print a color version. We’re still working out some ink issues but here is how the model came out:

We also made an SLS-optimized verison of our triangle square for Shapeways, so if you don’t have a 3D printer you can now order one if you like:

Or, if you REALLY love triangle-squares, then for £100 you can get a huge aluminum version Dudeney’s Dissection at the wonder Grand Illusions shop. Here is that model in action:



As an Amazon Associate we earn from qualifying purchases, so if you’ve got something you need to pick up anyway, going to Amazon through this link will help us keep Hacktastic running. Thanks! :)

Generating Random Constructivist Art

This is a joint work by Edmund Harriss and Laura Taalman, aka gelada and mathgrrl, made at the #0things Hackathon at Construct3d 2018. The “0 Things” campaign is the brainchild of the unstoppable DesignMakeTeach, who encourages designers to identify what isn’t available in the 3D modeling world and then to give voice to those missing things. We took on the topic of female artists, and gelada had the great idea of creating a piece inspired by British constructivist artist Mary Martin.

Martin’s artwork Inversions, now in the Tate Gallery in London, is based on the mathematical idea of permutations. Can you work out the structure hidden in her beautiful work?

Our Martin-inspired parametric art generator creates randomly oriented wedges in the sizes and number that you specify. Check it out on Thingiverse and click “Open in Customizer” to make your own uniquely randomized work of art: Conversions – Inspired by Mary Martin’s Inversions. We built the 3D print below from four thin vertical strips, each with its own random seed to generate wedge rotations, and each about the size of a full MakerBot Replicator 2 build plate:



As an Amazon Associate we earn from qualifying purchases, so if you’ve got something you need to pick up anyway, going to Amazon through this link will help us keep Hacktastic running. Thanks! :)

Designing Knitting Machine Punch Cards with StitchFiddle

This is the fourth post in our series about machine knitting and our goal of using a Silhouette Cameo 3 craft cutter to create custom punch cards for vintage knitting machines. Here are the first three posts:

Now that we’ve sorted out how to cut punch cards and use them to make knit swatches, in this post we’ll discuss how to design the patterns for the cards and then get those designs into the Silhouette Studio software. We’ll start with a simple solution to the problem, using the easy-to-use online design program Stitch Fiddle:


Of course, we could just create our designs directly in Silhouette Studio, by coloring or uncoloring the circles in the punch card template we already developed:

Screen Shot 2018-09-23 at 5.54.26 PM

That would be fine for a simple pattern, but would be too tedious and fiddly for something that had to go through a lot of design iteration like the green StitchFiddle pattern shown above above (based on “gliders” from Conway’s Game of Life).

In StitchFiddle you can just click the cells of the pattern to turn them on/off in different colors. You can also change the pattern grid style, so we thought maybe… just maybe… the StitchFiddle holes would be the correct size for our punch cards?

Screen Shot 2018-09-23 at 5.52.47 PM

The pattern above is based on the “Sorry to Bother You” font (see the Appendix below). To export from StitchFiddle use [File/Print] and then [Download as PDF], and then finally set to JPG. The resulting JPG file can be imported into Silhouette Studio. Alas, the holes are not the correct size or spacing, but by scaling and then overlaying the StitchFiddle pattern on our Studio punch card template, we could easily see which circles in the template to color “red” for cutting. Here’s what the resulting patten looked like in Studio (with the StitchFiddle pattern guide now moved over to the side). Note on the right side of the image that we are setting the red lines to be cut when set to the Cameo.

Screen Shot 2018-09-23 at 5.53.14 PM

Success! (mostly)


Some of the holes didn’t punch all the way through, and things got a bit warpy after the Dura-Lar paper started moving around for some reason during the cutting process, but at least the top of the card was good enough to run through the Brother KH-881 for a test swatch:


The result was pretty messed up, but actually really good for a first test. THIS IS GOING TO WORK!

Things to do next time:

  • Flip the punch card over when using it in the knitting machine — of course the design gets reversed so I need to reverse the card!
  • Use the motif spacer thing on the knitting machine that makes the pattern only appear once — in this sample the words get repeated immediately in each row, but we only want them once.
  • Set the cutter to cut sharper/harder so that the punches always go all the way through.
  • Adjust the cutter rollers to keep the media properly in place while cuting.


The design we’ve been working with in this post is the start of a longer scarf design of lyrics from song The Guillotine by The Coup, based on the font and style of the posters for the amazing movie Sorry to Bother You. The final design will have to be cut on multiple punch card sheets and then attached together for feeding into the knitting machine. Here’s what the pattern looks like so far:




As an Amazon Associate we earn from qualifying purchases, so if you’ve got something you need to pick up anyway, going to Amazon through this link will help us keep Hacktastic running. Thanks! :)