XOXO Rubber Stamp

A small notebook lying clipped open stamped with XOXO in rainbow colors. The stamp sits next to the impression. A multi-colored stamp pad and a purple pencil are visible around it.

XOXO is happening one more time in Portland (OR) right now! I couldn’t be there this year but, I made some rubber XOXO stamps and, sent them off to people who will be there. They are using them to encourage community and interaction. If you are there and have something you want stamped, look and ask around in person or in slack.

I made a short of assembling the stamps. I may do a video on rubber stamp design and file prep, if there is interest.

Update: I collected some photos of the stamps and impressions from the stamps in the wild (mainly at the festival).  Thank you so much to everyone for sharing your photos!

If you have any photos that include (intentionally or incidentally) the XOXO stamps or impressions from them that are not here already, please contact me to get them added.

Glow Engrave Deck Boxes

At the end of 2022, I made some tabbed deck boxes with glow-filled engraves. The originals were holiday gifts for the nieblings with their initials on the fronts. Those held a normal, unsleeved Magic: the Gathering deck.

Later, by request, I made a larger one that holds a sleeved “commander” deck. This one has a rune I used to use as a personal identifier on the front, as well as one of my Celtic key pattern panels on the side.

These are all made from hardwood ply (maple, cherry and, walnut). That makes the finger joints pretty pronounced.

Networked USB Flash Drive

Networked USB drive built with a Raspberry Pi Zero in a laser-cut clear acrylic case.

I do much of my 3D modeling on an iPad or a desktop computer. The resin printer is in a closed-off room (with external ventilation) on the other side of the house from anywhere I would be preparing 3D print jobs.

At some point a few years ago, I thought it would be cool to be able to to send files to the printer across the network. I thought about how to do that and, grabbed a Raspberry Pi Zero W and a few assorted parts and … left them sitting on my workbench.

Recently, I noticed the parts were still sitting there and, again concluded it would be nice to be able to send files to the printer from my desktop machine without doing a sneakernet transfer with a USB flash drive. One evening recently, I decided to put it together.

In the interest of making it less fragile, I decided it needed a case. As a prelude to designing one, I went looking to see if anyone else had designed one. This case from dsacademy looked like it might work and, with a few small modifications, it did (mostly adjusting for different acrylic thicknesses – see my notes about it on Thingiverse).

I have been using this on my Anycubic Photon M3 for a couple weeks now and, it has been working great.  No issues to report.

I took notes on getting it all set up and configured. They are a little rough for a tutorial but, since a few people expressed interest, I thought I should post them.

Networked USB drive built with a Raspberry Pi Zero in a laser-cut clear acrylic case.

Setup Notes

Get the Raspberry Pi Imager.

Run it and, follow the directions to install to your micro SD card. It will save a lot of effort later to get things like the wifi, username and password and, hostname set up in the installer. So, take your time and do that.

Remove and re-connect the micro SD card. A new drive named “boot” should appear.

Make an empty file named “ssh” in the root of the boot drive/partition.

Edit config.txt with a text editor and, add this line to the bottom of the file:

dtoverlay=dwc2

Edit cmdline.txt. Add this to the very end of the first line (being careful not a create an additional line):

modules-load=dwc2

Eject the micro SD card, remove it and, put it into the Pi Zero W. Plug inner-most USB port on the Pi Zero W into your computer (the outer port is power-only). It will take a few moments to start up.

You should be able to SSH in to the Pi Zero W now. You can likely use the web console of your network router to find the local IP address assigned by DHCP.

I prefer vim to nano. So, I install that:

sudo apt-get install vim

Remove stuff you won’t need:

sudo apt-get remove --purge libreoffice* -y
sudo apt-get purge wolfram-engine -y
sudo apt-get clean
sudo apt-get autoremove -y

Double-check that /boot/firmware/config.txt contains the line:

dtoverlay=dwc2

Edit /etc/modules and add a line to the bottom of the file with:

dwc2

Create a container for the data storage portion:

sudo dd bs=1M if=/dev/zero of=/piusb.bin count=2048

Adjust the “count” number to reflect the size of the drive you want. Do not fill the entire micro SD card but, you can use most of the unused space. Maybe leave a GB or so. This may take awhile to finish.  I used a 118G micro SD card and made a 100G pre-allocated storage file.  That took a few hours to format.

Format the container with a FAT32 file system:

sudo mkdosfs /piusb.bin -F 32 -I

Make a mount point:

sudo mkdir /mnt/usb_share

Edit /etc/fstab and, add the mount command:

/piusb.bin /mnt/usb_share vfat users,umask=000 0 2

Mount the container:

sudo mount -a

Edit /etc/rc.ocal and add these lines before the line that says “exit 0”:

/bin/sleep 5
/sbin/modprobe g_multi file=/piusb.bin stall=0 removable=1
sudo mount -o ro /piusb.bin /mnt/usb_share

Reboot.

Install Samba:

sudo apt-get update
sudo apt-get install samba winbind -y

Edit /etc/samba/smb.conf and add this to the bottom:

[usb]
comment = Whatever You Like Here
browseable = yes
path = /mnt/usb_share
read only = no
create mask = 777

Set a Samba password for your account:

sudo smbpasswd -a YourUserName

Restart Samba:

sudo systemctl restart smbd.service

Automate USB device reconnect in order to have it update when you transfer new files via the network:

sudo apt-get install python3-watchdog

Install this python script from a random stranger on the Internet:

cd /usr/local/share
sudo wget http://rpf.io/usbzw -O usb_share.py
sudo chmod +x usb_share.py

Turn this into a background service. Edit (create) /etc/systemd/system/usbshare.service and, put this in it:

[Unit]
Description=USB Share Watchdog

[Service]
Type=simple
ExecStart=/usr/local/share/usb_share.py
Restart=always

[Install]
WantedBy=multi-user.target

Then make it go:

sudo systemctl daemon-reload
sudo systemctl enable usbshare.service
sudo systemctl start usbshare.service

lf you run this by applying power (e.g., with an adapter) to the outer USB connection on the PI Zero W, it won’t shut off if the device it is plugged into as a USB drive is shut off or, if the Pi Zero W is unplugged. You probably need to make sure it doesn’t get power through both USB ports, though. There are a number of ways to accomplish this:

  • You can put a little piece of electrical tape over the positive (+) power pin of the USB A connector for the cable you are using.
  • You can modify a cable by stripping the insulation and cutting the red wire, then repairing the insulation.
  • You can use a filter device like this thing (Amazon link).

This is a tiny little computer. It doesn’t like unceremoniously losing power. So, if you are going to disconnect it so that it doesn’t have power anymore, you should ssh into it and issue a “sudo halt” first. Then, give it a few moments to gracefully shut down.

To make it easy to get to this on my network, I used my router’s DHCP info to find the MAC address of the Pi Zero W, then configured DHCP to consistently assign the same IP address to it. I also set up an alias in my router’s DNS forwarder for the hostname. So, I can now use the hostname for ssh or mounting the share over the network.

Glow-in-the-Dark Bronze Crackle Reliquary

I made this reliquary with a cracked bronze finish to go with a beautiful D20 “Necromancy” chonk from False Life Dice giveaway as part of their 8k follower celebration on Instagram in May (2024). The cracks (and the Necromancy chonk) glow in the dark. This was a lot of fun! I really enjoyed creating this and, seeing it off to a new home, paired with a great piece of resin art.

Small Polyhedra

Most of the time, laser-cut polyhedra are made by cutting individual faces and, attaching them either to each other with connectors or, to a base internal structure. I had an idea for a different way to do it based on paper craft polyhedra.

The general idea is to laminate the material for the faces to a heavy card stock. Then, cut through just the top layer and enough to score the card stock so it folds nicely.

This works great with all kinds of outer layers, including different card stock, wood veneer, shell veneer, cork, fabric, etc.

I found some fast-drying PVA-style glue that sets up fast enough to stand while assembling them (about a minute).

Another challenge of paper polyhedra is that it is difficult to get the final tabs to stick well as it’s not possible to push on both sides of these. I solved that by cutting out the last side and, just leaving a frame. That way, I can get a finger or a tool inside (depending on size) to push against both sides. By removing the laminated outer layer from that frame side, I can then put a solid panel over it to hide the opening.

Since the resulting polyhedra are hollow, it is also possible to put a light inside. I designed a little triangular Celtic-style key pattern and, cut a latticework into each of the faces of an icosahedron. I added an interior vellum backing layer to act as a diffuser. I built a couple different circuits using CR1216 coin cells and Chibitronics Circuit Stickers. The second version uses a reed switch so the light can be activated with a magnet from the outside.

I have made a bunch of these and, will likely make more in the future.

There is a video walking through making a plain wood veneer dodecahedron and two lit icosahedra.

If you aren’t into videos, I did a write-up in a forum post with a little more detail about the process of making them.

If you want to try making some, here are the basic patterns for an octahedron (8 sides), a dodecahedron (12 sides) and, an icosahedron (20 sides). Let me know if you try this!

These files are for personal, non-commercial use only.  Note that, by referencing these, you are agreeing to release any variations you create under identical terms.

Attribution-Creative Commons NonCommercial-ShareAlikeOctahedron Pattern (SVG)

Dodecahedron Pattern (SVG)

Icosahedron Pattern (SVG)

Faux Copper Patina Reliquary

Chatting with resin/dice artist Georgina (@DiceOfTheSeeker) about colors in one of her pieces, I realized it would probably look pretty cool on one of my reliquaries with a copper patina finish. So, I made one and, sent it to her. She sent back some wonderful photos. I also made a 90-second short about how I did the finish.