OpenSCAD Club Cookies

@raster wanted to make cookie cutters.  This has been something of a solved problem for about 12 years now, through Thingiverse’s Cookie Cutter Customizer.  Except, it’s been totally non-functional for probably a decade now.  :(

My solution is basically to make a solid for the thin brim + tall cutting edge and then subtract the original SVG shape.  I tried it with each of @raster’s SVG’s for the teddy bear, cloud, hexagon, and pacman and they seem to work.  Anyhow, here’s the code I wrote instead of doing the work my employer pays me to do:

//  Settings
    $fn = pow(2,7);
    nozzleD = 0.4;
    th = nozzleD*pow(2,2);
//  Measurements
    cutterH = 15;
    cutterW = 10;


cutter() import("TeddyBear.svg");

module cutter()
    {
    difference()
        {
        union()
            {
            //  Thin, tall cutter wall
            linear_extrude(height=cutterH, center=false)
                offset(r=th)
                children();
            //  Wide, short cutter holder
            linear_extrude(height=th, center=false)
                offset(r=cutterW)
                children();
            }
        //  Cutting out the shape
        linear_extrude(height=cutterH*3, center=true)
            children();
        }
    }

Should we have a club motto?  I vote for “Vive la différence!”

#OpenSCADClub
  1. OpenSCAD 3D Printed Spring
  2. OpenSCADClub Week 2: Directional Pad
  3. OpenSCAD Render Times
  4. One Simple Trick Can Save You 30 Minutes…
  5. OpenSCAD Club Cookies

Seeed Studio XIAO ESP32C3 and a small sticky note display

The chief benefit of the XIAO ESP32C3 appears to be it’s very low cost.  $5 for a microcontroller which can run Arduino or CircuitPython and has WiFi and Bluetooth sounds like a smoking deal.  As I’m fumbling my way through this project, I’m finding some little hiccups learning experiences along the way.

  1. The XIAO ESP32C3 doesn’t support USB file transfer, which is going to make putting CircuitPython on the board more interesting.
    1. One of the most convenient aspects of CircuitPython is being able to update the MCU over USB.  In an ideal world, I would have worked out the kinks on this project and then transferred the program to a cheaper Board.
    2. I went with this particular board since that’s what the author of the Hacksterio article used.  For $2.50 more I could have gotten a XIAO ESP32S3 which would support native USB rather than the ESP32C3.  I’ll just make sure to order some S3’s next time!  :)
  2. Using the guide linked above, you need to enable “Experimental Web Platform features” in Chrome.
  3. My “XIAO ESP32C3” showed up in the Adafruit web based ESPTool.  I noted the MAC address, erased the MCU (~15 seconds), and uploaded the new firmware BIN file from CircuitPython.org (~12 seconds).
  4. After futzing with Mu for a while, I ended up following an Adafruit guide and installing the portable version of Thonny on my PC which allowed me to update the board’s settings.toml file as described in the Adafruit guide.
  5. I wasn’t having a lot of success figuring out the MCU’s local IP address, so I used the Adafruit code for having print the IP address to the terminal.  For some reason I found the MCU’s MAC address appearing on my router’s wireless client page.
  6. Uploading files from my PC to the MCU using Thonny wasn’t quite intuitive.  There’s a file navigator on the left side of the screen.  On the top you can use to find files on the local PC and on the bottom navigate to the target MCU folder.  Once you’ve got these, you can right click on the local files and upload them to the target folder.  Later, I discovered I could select multiple files and upload them all at once, which made adding libraries way faster.
  7. After installing CircuitPython on the XIAO, I keep bumping into the error “ValueError: D8 in use”.  It took WAY longer to figure out this problem than I was anticipating.  After much hand wringing and rending of clothes, it turns out that if you don’t call “displayio.release_displays()” when initializing the board, it will claim this or that particular pin is in use and won’t let you do anything interesting.
  8. Even after solving that problem, it turned out that I was trying to use the wrong driver for the board.  I started with “il0373” which wouldn’t display anything, then “uc8151d” which also displayed nothing, and finally “ssd1680” which did work.

Here’s the pin connections I’m using, going from the label on the e-paper display, to what the acronym means, to the color of the wire on the cable, to the XIAO pin, to what that pin means:

E-Paper Meaning Color XIAO Meaning
BUSY Busy purple D4 D4 / SDA / GPIO6
RST Reset white D3 D4 / A3 / GPIO5
DC Data Command1 green D2 D2 / A2 / GPIO4
CS Chip select2 orange D1 D1 / A1 / GPIO3
CLK SPI SCK pin3 yellow D8 D8 / SCK / GPIO8
DIN SPI MOSI pin blue D10 D10 / MOSI / GPI10
GND Ground brown GND Ground
VCC 3.3 volts gray 3V3 3.3 volts

Here’s the code I could get working:

import displayio
displayio.release_displays()
import time
import board
import wifi
import socketpool
from adafruit_display_text import label
import adafruit_requests
from fourwire import FourWire
import board
import busio
import digitalio
from adafruit_ssd1680 import SSD1680
#import terminalio 
#import ipaddress
#These last two commented out as I try to figure out what's still necessary to get this project to run
spi = busio.SPI(clock=board.D8, MOSI=board.D10) display_bus = FourWire( spi, command=board.D2, chip_select=board.D1, reset=board.D3 ) display = SSD1680( display_bus, width=296, height=128, rotation=270, busy_pin=board.D4 ) # 🔧 Set custom hostname BEFORE connecting to Wi-Fi wifi.radio.hostname = "Sticky" # change this to whatever name you want print("Connecting to Wi-Fi...") if wifi.radio.ipv4_address: print("Connected to Wi-Fi!") print("My hostname:", wifi.radio.hostname) print("Connecting to SSID...") print("My IP address is", wifi.radio.ipv4_address) ipad = wifi.radio.ipv4_address else: print("Failed to connect to Wi-Fi.") # Fetch the IP address if wifi.radio.ipv4_address: ip_text = str(wifi.radio.ipv4_address) ip_text = "19.2.168.0.1" etext = f"Hello! It's me! \nA TOTALLY \nresponsible \nadult!" else: etext = "Hello eInk!\nWi-Fi not connected." from adafruit_bitmap_font import bitmap_font # Load a larger font (adjust path as needed) font = bitmap_font.load_font("/lib/Junction-regular-24.bdf") splash = displayio.Group() text = label.Label( font, text=etext, color=0x000000, x=10, y=15, line_spacing=0.7 ) bg_bitmap = displayio.Bitmap(296, 128, 1) bg_palette = displayio.Palette(1) bg_palette[0] = 0xFFFFFF # White background bg_sprite = displayio.TileGrid(bg_bitmap, pixel_shader=bg_palette) splash.append(bg_sprite) splash.append(text) print(etext) try: display.root_group = splash display.refresh() print("Waiting for refresh to complete...") time.sleep(5) print("Display refresh called.") except Exception as e: print("Error during display refresh:", e)

Here’s the progress so far:

This slideshow requires JavaScript.

Having gotten this to work, I’m pretty excited about the possibilities.  I would love to have a Doctor Who psychic paper display4 , an addition to my kid’s Pip-Boy, or a physical desktop widget that displays interesting / useful information.

With this setup I can manually hardcode a new message and update the e-paper display.  Not super useful in and of itself. However, with some elbow grease and a few late nights, I’m hopeful I can add the ability to connect to a Bluetooth device and update the screen, set off a buzzer, or set off a small vibration motor.  Right now there are 5 pins left unused:  D0, D5, D6, D7, D9.  I figure I’ll need one to wake the device from a deep sleep, one for an RGB / NeoPixel LED to provide a little instant visual feedback, one for a buzzer, one for a vibration motor, and then maybe one more for another button.

Sticky Note Timer
  1. Ah, just what I need! A new project!
  2. Sticky Note Timer, parts arrived!
  3. Seeed Studio XIAO ESP32C3 and a small sticky note display
  1. Data / Command selection [high for data, low for command] []
  2. SPI chip selection, low active []
  3. Clock []
  4. Thus, the “responsible adult” above []

Where is the Othercutter? [Draft 06/08/2015]

[This is a post I’ve revisited so often that I really have no idea when I began writing it – and couldn’t figure it out without digging deep into the WordPress database.  Suffice it to say, I’ve wanted a cardboard cutting CNC for a long time.  Originally a collaboration between DARPA and OtherLabs, most of the interesting parts of this project have been removed from Otherlabs’ website and many other resources the victim of linkrot.  As a project funded by a federal agency, there’s a slight possibility some semblance of documentation for this machine might still kinda exist somewhere accessible via FOIA requests…  The operation isn’t exactly arcane, a reciprocating blade, that can be rotated through 360 degrees, on a rail, and a bed that moves a sheet of cardboard back and forth – like a suped up craft cutter.]

I can’t help it – I love cardboard and I love CNC tools. 1  Cardboard is free or cheap, lightweight, strong, but can look unfinished and is very susceptible to moisture.  This makes it ideal for prototypes and temporary projects.  However, when a cardboard structure is covered, it can be incredibly strong and durable.

The promise of the Othercutter was a simple CNC machine kit using an off the shelf x-acto blade to cut cardboard or foamcore.  

The shortest possible version is that the Othercutter was the brainchild of Otherlabs (now Bantam Tools).  What started out as a project to cut cardboard morphed into the Othermill, a small capable desktop CNC mill initially released on Kickstarter.  I could never do justice to the Otherlabs and Bantam Tools story – it’s a wild ride and worth a read.

  • https://web.archive.org/web/20130209054433/http://blog.mentor.otherlab.com:80/
  • https://blog.bantamtools.com/loving-our-own-dog-food
  • https://otherlab.com/blog/post/the-othercutter-low-cost-cnc-machine
  • https://web.archive.org/web/20130122094442/http://blog.mentor.otherlab.com/the-othercutter-low-cost-cnc-machine/
  • https://web.archive.org/web/20130109063100/http://blog.mentor.otherlab.com:80/the-beginning-otherlab-and-the-mentor-project/
  • https://web.archive.org/web/20130131051839/http://blog.mentor.otherlab.com:80/architecture-and-the-othercutter/
  • https://web.archive.org/web/20130131175353/http://blog.mentor.otherlab.com:80/othercutter-update-speed-and-quality-control-testing/
  • https://web.archive.org/web/20130210080545/http://blog.mentor.otherlab.com:80/cardboard-in-the-wild-marty-morales
  • http://kimlyis.me/otherlab-otherfab/
  • https://sites.google.com/site/3dprinterlist/cnc-cutters/othercutter
  • https://ingriddragotta.com/Info
  • https://www.youtube.com/user/Otherlab/videos
  • https://arstechnica.com/information-technology/2013/05/a-day-at-the-bay-area-maker-faire-the-greatest-show-and-tell-on-earth/
  • https://www.mssm.org/uploaded/STEM_Collaborative/2013_Educators’_Camp_Course_Selections_.pdf
  • https://web.archive.org/web/20101231104932/https://www.fbo.gov/index?s=opportunity&mode=form&id=0248c338123e8b6f51d4dcf743196464&tab=core&_cview=1
Drafts Zero - The Lost Blog Posts
  1. The Lost Blog Posts
  2. Plastruder! [Draft 12/25/2009]
  3. UNTITLED [Draft 12/25/2009]
  4. Preparing to print [Draft 12/27/2009]
  5. More prints [Draft 01/04/2010]
  6. Prototype Pricing [Draft 01/19/2010]
  7. MakerBot tuning [Draft 01/20/2010]
  8. Plastic Screw Anchor [Draft 02/02/2010]
  9. Magic [Draft 02/03/2010]
  10. How are you printing with PLA? [Draft 02/16/2010]
  11. Rebuilding my extruder [Draft 02/16/2010]
  12. MY robot [Draft 02/18/2010]
  13. more things i learned [Draft 02/20/2010]
  14. First commissioned piece! [Draft 02/22/2010]
  15. MakerBot: Toy or Tool? [02/25/2010]
  16. Idea for Skeinforge settings… [Draft 03/27/2010]
  17. RepRap and MakerBot alternatives [Draft 04/05/2010]
  18. RepRap Parts for Sale [Draft 04/07/2010]
  19. Where is the Othercutter? [Draft 06/08/2015]
  1. Gotta collect them all. []

Sticky Note Timer, parts arrived!

The parts have arrived for this project!  The three XIAO boards cost $17.33, were ordered on 04/10/2025 and landed on 04/17/2025. 1  The 2.9″ e-ink display cost $24.99 from Waveshare, were ordered on 04/11/2025 and landed on 04/14/2025.23

Parts!

Parts!

I’ll need to solder in the headers for one of the XIAO chips, connect it via jumpers to the e-ink display, and then see if I can update the screen with content.  For now, I’ll just power it with USB until I get it working, then solder in a LiPo connector.

Sticky Note Timer

  1. Ah, just what I need! A new project!
  2. Sticky Note Timer, parts arrived!
  3. Seeed Studio XIAO ESP32C3 and a small sticky note display

  1. This price includes shipping and after a $5 welcome coupon code for my first order []
  2. Again, this includes shipping []
  3. I’m not without some degree of self-reflection.  I’m ~$45 deep on this project which would buy four kitchen timers and 4,000+ sheets of off-brand sticky notes.  But, what price knowledge?  WHAT PRICE KNOWLEDGE?!?!? []

Trash to Treasure

Years ago, like more than a decade ago, I went on a tour of a Tesla facility, which was amazing, and I bought a t-shirt.  Now the idea that I gave that company any money turns my stomach.  While comfortable, the shirt was not cheap and the neck stretched out almost immediately.

Not my shirt, I just forgot to take a picture of it before I got started cutting...

Not my shirt, I just forgot to take a picture of it before I got started cutting…

My youngest had a craft / reuse class where the take-home project was to create a sock monkey.  Except we didn’t have any long socks that could be turned into a monkey and destroying something useful to make something less useful is kinda not the point.

I like to participate in these projects with her, so I decided to donate this t-shirt to the cause.  As with all good projects, I started with a detailed plan.

Detailed schematics for plushie

Detailed schematics for plushie

The rest isn’t super involved or interesting.  I sketched out the design on the outside of the shirt and got cutting. From there, ran it through the sewing machine, cut the rest of the shirt cutoffs into scraps, and stuffed the shirt with itself plus additional stuffing.

This slideshow requires JavaScript.

And, now, please meet “Alset” the spider plushie.

Alset the spider

Alset the spider

Honestly, a lot more comfortable than you’d expect.

Ah, just what I need! A new project!

A rough sketch

A rough sketch

If you’re anything like me, you’re familiar with the idea of Too-Many-Tabs™️.  I see a cool thing, I open it in a tab, I might organize tabs, I might bookmark them, and see them now and then.  The worst part about this for me is that as long as they’re not yet bookmarked and organized, I don’t want to close the tabs – so that I don’t “forget” about them.  But, as long as I’ve not bookmarked/organized/blogged about something, it will feel like it is still using some level of brain bandwidth, running as a “background process” using a small, but non-zero, amount of brain attention.  The only good ways I’ve found to excise these ideas/tabs/processes is for me to act on them (get started building and/or blog about them) or kill them (bookmark/organize).

I’ve seen several projects recently which are swirling around several similar concepts for me:

All of these projects do interestingly adjacent tasks – displaying relevant information, in an attractive way, serving as a reminder, good either on a desktop or perhaps a wearable.  I could see making a version of Tymer as a wearable watch.  The build seems fairly straightforward – buttons to input times, deep sleep functions which wake once a minute to determine if it needs to set off the vibration motor.  I would love a small simple e-display such as the ESticky – to sit on my desktop, perhaps on/near/in front of my monitor.  What’d I’d really like, of course, is something that’s kinda does some of each.

I ordered the parts for the ESticky, since the Tymer appears to basically require just a battery charging board (already integrated into the ESticky’s Seeed Studio XIAO ESP32C3) and a vibration motor (which I have a stack of already).  I’ve not used a Seeed Studio product before, but it appears to be similar in formfactor and function to the Adafruit QtPy’s I’ve been using in various recent projects.  Because I know I’m going to want to use one XIAO board as my dev board with headers and breadboard, one in the project itself, and one because…  they’re cheap ($5) and there’s even odds I’ll blow one up.

My plan is to build a direct copy of the ESticky on a breadboard, add the vibration timer and buttons to manipulate it, see if I can do it in a more permanent format by soldering it together, then design / print a case.

I’ve never worked with a Seeed Studio product and not played with eink displays yet.  Hopefully this will be fun!

Bonus:  Now that I’ve purchased some of the parts, I can close dozens of tabs!

Sticky Note Timer

  1. Ah, just what I need! A new project!
  2. Sticky Note Timer, parts arrived!
  3. Seeed Studio XIAO ESP32C3 and a small sticky note display

Off the rack options for EDC bags

This slideshow requires JavaScript.

I’m not too proud to admit that I thought Ryan Reynold’s thief character running around in Red Notice with a sling bag under his jacket packed with stolen goods was super cool.  I genuinely want a sling bag to carry a small amount of things comfortably, possibly while looking cool, and absolutely not while committing crimes.  I’d included these pictures above with a prior post and absolutely zero context.  I meant to come back to that post and I guess I am… about two years later.

I guess this post is about what kinds of bags I might choose if I was going to pick something off the shelf.  Or maybe just bags I saw.  Really, though, it’s about getting rid of browser tabs.1

  • Red Notice, Ryan Reynolds’ character Nolan booth using a North Face Electra Sling
    • The online reviews were kinda mixed for this bag – which is irrelevant since they’re not for sale anywhere and hard to locate used.
  • Deadpool 2, Josh Brolin’s Cable carrying an unknown tactical utility bag
    • Likely a prop department modification of an existing bag.  While I’ve seen references to a Porter Yoshida Heat Waist Bag2 or a Hazard4 brand bag in the years since the movie, I haven’t seen any definitive post identifying the specific manufacturer.  Kind of a missed marketing opportunity to capitalize on people’s willingness to get something similar to what someone in a movie wore.
    • I’d be interested to know what bag this really was and how it was put together, but all the unnecessarily militaristic MOLLE stuff and buckles would make it entirely too bulky for my purposes.
  • Patagonia Atom 8L
    • If I absolutely had to buy a side sling bag today, it would probably be either this Atom 8L or the Patagonia Black Hole Sling 8L, which appears to be semi-discontinued. 3  Not too small, not too big, strap looks wide and comfortable with a way to store a phone on it.

I do have some new designs for a bag, but they’re not super different from designs I posted last time.  And, really, I should either shelve the idea of making a new bag entirely or just going and make something.  I’d say my limiting factor of late has been time, rather than motivation.

I do genuinely want to get going on a few different sewing projects, though.  Some small zipper bags, some cosplay elements to go with our Maker Faire (and OpenSauce!) applications, and of course a new bag to carry around.

It’s late and I’m babbling.  More nonsense soon.

Custom Every Day Carry Bag

  1. My Ultimate Bag
  2. Custom Every Day Carry (EDC) Bag
  3. Sewing Practice
  4. EDC Bag Materials, Designs, Etc
  5. Off the rack options for EDC bags

  1. Sometimes I’ll blog as a way to jot down notes connected to links when a bookmark by itself won’t really do []
  2. Don’t go down the rabbit hole of looking for this bag.  It’s 7+ years old and the links mostly now point to sketchy new sites []
  3. You can still find used options around []

Designing Custom TCG Cards and Proxies

This post is basically a bookmark dump so I can locate this information later on.  Maybe it will be helpful to you too!

  • Card Design Websites
    • CardConjurer.App.  Easily the most comprehensive and feature rich card design option.  Lots of formats, borders, etc, for Magic the Gathering related cards.  You can download and save your cards in JSON formats.
    • MtG.Design.  Kinda difficult to navigate, reasonably easy to use, slightly strange saving system.  Limited frames.  Download cards as images.
    • MtGCardSmith.com.  Somewhat confusing interface, lots of options, confusing saving features.  You have to have artwork before rendering a design.
  • AI Art Generators
    • OpenAI’s ChatGPT.  I paid for ChatGPT for a few months, then stopped when I started using some local LLM’s and other free resources for code related projects.  You can still generated a limited number of images per day.  The paid version which gave a lot of image generations per day was probably the best I’ve used.
    • Google’s Gemini.  This works pretty well and while I haven’t really I haven’t bumped into the daily limits yet, I haven’t needed to.  Decent.
    • Playground.com.  I used to use this site a lot – until they made a hard pivot to what appears to be a way to integrate their generated images into products that you’d expect to see on Etsy/Amazon.  You have to really dig around to get it to give you something useable these days – but it’s free.

I have a semi-regular D&D game with friends.  In order to help track initiative / attack order, I had the idea of creating cards for every player.  The idea being that we all roll for initiative then hand the DM our stack of cards in the order we’re going – with the DM having a stack of opponent cards he can put in there too.  If the cards I create just happen to be TCG / MtG sized and he can find placeholder cards for goblins, trolls, etc, so much the better.

Print On Demand Custom Cards

  1. Custom Cards with DriveThruCards.com
  2. Review of DriveThruCards.com
  3. Designing Custom TCG Cards and Proxies

Inkscape Protractor and Rulers

Over the last week I’d tried making a set of small rulers and straight edges I could keep in notebooks of various sizes.  I’ve got a big heavy sketchbook, a thin college rule composition notebook with several DIY augments, and a very small sketchbook about 4″ square.

Just four notebooks

Just four notebooks

My idea was to make small credit card / ID card sized rulers, print them on paper, and then laminate them to keep in one or more notebooks.  My first attempt a few days ago was serviceable1 – but lacking in aesthetics and functionality. (I’ll show some pictures below…)

This morning I saw a Mastodon post by @concretedog234 demonstrating his use of a homebrew lasercut protractor.

@concretedog's lasercut protractor

@concretedog’s lasercut protractor

Inspired by @concretedog’s work, I embarked upon building my own in Inkscape, using some printable ruler I found online.  A few design progress pics:

This slideshow requires JavaScript.

The basic process I used was:

  • A few concentric circles for the overall protractor outline and semi-circle cutouts
  • A longer 10 degree increment rotated 18 times (since it was a line at the top and bottom), a medium 5 degree increment rotated 36 times, and a short 1 degree increment rotated 180 times
    • Edit -> Clone -> Create Tiled Clones
      • Symmetry:  P1: simple translation
      • Shift:  make sure the exponent is “0”
      • Rotation:
        • Angle row/column:  0, 5 degrees
        • Rows/columns:  1 x 18
  • Then added the rulers minus the numbers (just looked cleaner)
  • Three clones of the result, printed on paper, cut one out, cut out the semi-circle windows and center, laminated, then cut out the semi-circle windows and center again, ran it through the laminator for good luck

This slideshow requires JavaScript.

In an ideal world, I would also have created the ruler marks using @concretedog’s guide … I just hadn’t seen it until I got around to finishing this project. :)

  1. built from PrintableRulers.net []
  2. Someone I’ve been following for years and have come to think of as a parasocial friend []
  3. Is following a fellow maker a parasocial relationship if you interact with them? []
  4. Parasocial could be pre-friendship? []

One Simple Trick Can Save You 30 Minutes…

After mentioning long render times on my machine, @raster suggested switching to the manifold 3D rendering backend.  Depending on your OpenSCAD version, you might need to poke around to find how to enable this option.  It’s absolutely worth your time and should really be enabled by default.

If you dig into this option a little, and you’re a 3D printing old timer, you might recognize the creator of this library as none other than Emmett Lalish!!!  Emmett was an early 3D printing adopter, from back in the MakerBot Thing-O-Matic days, creator of the original heart gears, and just all around incredible engineer. 1 2

Emmett’s manifold library dropped the render time for one of my designs from 300 seconds to… under 8 seconds.  I literally used to avoid hitting F5 on more complex designs or avoid cranking up the facets so I didn’t have to wait for long renders.  A single comment from a friend, telling me about an option written by another friend, has completely and permanently changed how quickly I’m able to iterate and design objects forever.

Here’s how you can instantly save tons of time with your OpenSCAD designs:

"Manifold (new/fast)"

“Manifold (new/fast)”

#OpenSCADClub

  1. OpenSCAD 3D Printed Spring
  2. OpenSCADClub Week 2: Directional Pad
  3. OpenSCAD Render Times
  4. One Simple Trick Can Save You 30 Minutes…
  5. OpenSCAD Club Cookies

  1. Emmett even wrote a guest post on this very blog about… 14 years ago?!?!  Time flies, I guess? []
  2. Special thanks to my honorary editor Andrew for catching a typo… []