普通视图

Received before yesterday

An Adapter Adapter

2026年3月23日 23:43

Over the weekend, one of the amazing student Technologists, Link did a clean and reorganizing of the resin 3D printer station. The printer gives off some nasty fumes, so she was able to procure an air purifier set up just for such printers. Unfortunately, the model available doesn’t directly connect with our Prusa SL1S. Link put the air filter in place, but had to resort to duct tape to get it ti connect to the resin printer. It didn’t work.

So when I came in this morning and saw the need for an adapter to the adapter, I knew what I was going to do today!

I spent some time thinking about the best options. An insert with magnets? But how does the original adapter stay put on the new adapter?

Well, there are screw holes, how about using them? Yep, that’s the ticket. Basically replicate the bottom of the original adapter so it can screw to the new, then add a whole bunch of magnets!

Alt text

And it worked on the first try! I had to double up the magnets in order to make it strong enough to stay on, and the gasket printed in TPU could be a little bit thicker. But it was a great success!

Alt text

The models are available on Printables.com for download and 3D printing.

Gear Train Assemble!

2026年3月19日 19:01

seven versions of the holder so far

On the heels of the knowledge gained from the last post figuring out the gear train numbers, I set out to model the gears and a holder.

And immediately I was confronted with an issue with my calculations.

The Problem

At the end of all my learning and calculating, I decided:

It looks like 36mm (servo) —> 12mm|36mm —> 12mm (pinion) 
has smaller gears and gives good enough range.

One thing I forgot to consider is the length of the servo horn that is used to connect the servo to the gear. I could do without it, but trying to design and print such a small toothed hole has issues. I have seen others try and filament 3D printing does not provide fine enough detail to mesh well with the servo gear. So using the supplied horn attachment makes things much easier.

The problem, is that the horn is about 22mm in length. If my gear is only 36mm in diameter, then the horn would stick out into the gear’s teeth!

Gear is too small!

Another sidetrack bump I had to overcome was the getting the dimensions of the servo horn. The dimensions I could fine online were unsatisfactory. So I measured one myself!

SG90 servo horn

And went ahead and 3D modeled it and put the 3D model and diagram files up on printables.com for anyone to use.

With all of that info, I can then recalculate the gear train dimensions so it fits with the servo horn.

The Correct Gear Train

I played around with different settings, but it seemed the best option (that being the smallest size for the servo and large combo gears) called for a 46mm servo gear → 20mm 46mm combo gear → 20mm pinion.
Servo motor → 46
              ↓
             20 (same shaft as) 46
                                ↓
                               20 (pinion)

Sidetracked Again!

The first day of modeling, I decided to jump the Fusion 360 train and try onshape.com. It’s a web based 3D modeling and CAD tool. It has been around since 2015, and is gaining ad time lately in many of the YouTube.com videos I see, so I thought I’d give it a try. I was prepared for some learning curves and to spend some time learning a new system, but two things got me to throw in the towel after a full day of working with it; 1) I couldn’t figure out how to do something pretty simple that would take 2 minutes in Fusion 360, 2) I didn’t care for the interface; it felt too unprofessional. If TinkerCad.com is the elementary school version of CAD, it looked like Onshape.com was the 9th grade version. I did love that it was browser based. And making double helical gears was a breeze! There’s a handy built in menu for all kinds of gears. Fusion 360 on the other hand is big L in gear making. You have to import 3rd-party scripts and I can’t get any of the fancy gear scripts to work.

Like many things, it was the fact that I could get things done much faster with the tool I already knew, and I was accustomed to the interface that led me back to Fusion 360.

Making the Gear Train

I had previous attempts at designing the gear train, but I decided to start from scratch since Fusion 360 doesn’t have an easy way to just change the size of gears when using the gear script plugin thing.

Servo Gear

So, first I designed the servo gear. Pretty easy to create a 46 tooth gear with the gear script plugin thing.

servo gear with inset for servo horn

I designed a cut out, or inset, for the servo horn to fit inside. This is the easiest way to attach the gear to the servo. 3D printing these gears with filament would not have enough resolution to print the fine teeth needed to interface with the tiny default gear on the servo shaft. Much easier to use the included horn.

Combo Gear

The combo gear was pretty easy, too. Just make another 46 Tooth gear, then make a 20 Tooth gear and stack them on top of each other.

combo gear

I set the diameter of the hole through the gear at 4.2mm. That’s big enough for a M4 bolt to go through, with just enough tolerance to allow the gear to spin but not wobble.

Pinion Gear

Another very simple gear to model. There’s nothing special about this, just a 20 tooth gear with a 4.2mm diameter hole.

pinion gear

Rack

The rack is pretty straight forward. I created a 20 tooth gear, then used one of those teeth to copy down the length of the rack.

pinion gear

pinion gear

Gear Holder

This was a little bit tricker. The gears were all prototyped in one go. The first print was great. This part took 7 tries so far.

seven versions of the holder so far

I started by creating a new Assembly in Fusion. Then adding in the gears and aligning them as needed. I went with a stacked approach so as to keep the footprint as small as possible. I had previously modeled the servo motor, so I was able to add that in as well.

It was tricky to get the servo aligned with the servo gear, and then get each of the gears aligned with the ones the mesh with. In realized that if a part has the sketch turned on, then that shows up in the Assembly file. I used that to create a construction line on the servo gear and put a point where the center of the combo gear should be aligned to. Then I did the same on the combo gear to align the pinion. Then adding the holder, servo motor, and rack.

assembly, color coded

It was a lot of back and forth between the designs for the parts and the assembly to align everything correctly. But in the end I think it lines up well.

Spacers

After the first version, I realized that the gears needed spacers to keep them in place. The holder is wider than the gears. So modeling and printing a couple of spacers is pretty easy.

spacer

Somewhat Working

I connected everything up, bolted in the gears, and plugged it in. And it works… mostly.

As the video shows, the gears work, somewhat. There is a bit of jittering, which may be due to the code just rotating the gears back and forth. A more normal behavior would be moving from one angle to the next and stopping there. The servo is also not moving at a full 180°. More like 100°. This is only about 111mm of travel, not the 150mm we’re hoping for. It might be time to consider better quality servos. Perhaps some that move 270°.

It is also a pain to swap the servo motor. Perhaps a redesign is in order.


Missed the first two posts?

Funding provided through a generous grant from UVA Arts Council. Alt text

Jump on the Gear Train! - Critical Making 2025-2026 - Part 2

2026年2月27日 20:32

This week I started figuring out the gear train and rack and pinion needed to move the states. I have tried in the past to get AI to do this for me, but the results from ChatGPT and Copilot are all over the place and offer varying results every time I ask. I decided to use AI to learn the math instead of trying to get it to figure it out for me. Instead, I’m learning the math behind the problem to work it out myself.

Be forewarned, there is lots of math!

math?!?

TLDR;

What helped immensely was GearGenerator.com

And a spreadsheet that AI generated to calculate the travel distance of a rack based on the pinion diameter and number of rotations.

With help from GearGenerator.com I created a gear train which starts with a 36mm gear attached to a servo motor that meshes with a 12mm gear which is on the same axle (or combined) with a 36mm gear that then meshes with a 12mm pinion.

Input Value Units / Notes
Servo Gear Diameter 36 mm
Servo Gear Rotations 0.5 rev (revolutions)
     
Combo Gear Small Diameter 12 mm
Combo Gear Small Rotations 1.5 rev
Combo Gear Large Diameter 36 mm
Combo Gear Large Rotations 1.5 rev
     
Pinion Diameter 12 mm
Pinion Rotations 4.5 rev
     
Output Formula Result
Rack Travel per Rotation 37.69911184 mm
Total Rack Travel 169.6460033 mm

But how did I get this this answer?

Well, let me take you on a journey to how I figured this out and understood the problem.

What am I trying to do?

Each state will move up and down based on the data given. Prof. Rich Ross and I want this to be a pretty dramatic difference between the lowest and highest states, so we decided on 150mm of movement. After much deliberation and looking at various options, Yashu and I decided that a rack and pinion would be the easiest way to accomplish the goal. What is a rack and pinion? It’s simply a gear that moves a bar with gear teeth. It turns a rotational movement into a linear movement. The round gear is the pinion, the bar with teeth is the rack. )

A rack and pinion, a large circular gear moving a long bar with teeth

We figured the servo can rotate the pinion and move the rack attached to the bottom of the state up and down. (See last week’s post with a video of the test case.)

First Gear

The first question we needed to answer was; How far does the rack travel based on the size of the pinion?

The formula to figure this out is

\( T = Dπ \)

T is the rack travel distance, D is the diameter of the pinion, π is yummy and 3.14159265359…

It’s basic middle school geometry. The travel distance is just the circumference of the gear.

But our servo motor only goes 180-degrees, or half a rotation, or half the circumference. So we’ll have to keep that into consideration.

\( T = {Dπ \over 2} \)

The smallest size gear we want to use is probably 12mm. I just pulled that number out of the air (but actually, we’ll use it because I already know it works within all the parameters and constraints for the project 😁 ).

A pinion gear with a diameter of 12mm will cause a rack to travel \( T = 12π = 37.699mm \) But since our servo can only do a half rotation, the rack travel length is \( T = {12π \over 2} = 18.85mm \). I want the rack to travel at least 150mm. So a 12mm gear is not going to work.

In order to get the rack to travel 150mm from a single gear, we can calculate that

\( T = {Dπ \over 2} \)

\( {2T \over π} = D \)

\( {2(150) \over π} = 95.493mm \)

We would need a 95.5mm diameter pinion!

The footprint of the smallest state is about 45mm square. So everything has to fit within that area. So the largest a gear can be is about 40mm. We’ll need a different way to do this.

One option is to use multiple gears. We can use multiple small gears to create the same effect as one large gear. How does that work?

Second Gear

Well, if we just have two gears and one is smaller than the other, then if we turn the small gear one full rotation, the bigger gear will turn less than one full rotation. If the bigger gear is twice the size of the smaller gear, then for every 2 turns of the small gear, the big gear will turn once.

The blue, smaller gear is the one moving, or driving the larger gear

small turning large

The opposite is true, too. If the big gear rotates one full revolution, the small gear revolves twice.

large gear turning a small gear

Large turning small

The ratio between the sizes of the gears is called the gear ratio. The gear ratio is derived from the diameter of the gear doing the revolving divided by the diameter of the gear connected to the moving gear. We can call these the driving gear (the one attached to a servo or some other source that generated the movement) and the driven gear. So we get the formula:

Ratio (R) = Diameter (D) of driven gear (n) / Diameter (D) of driving gear (g)

\( R = {Dn \over Dg} \)

If the ratio is greater than 1, then the output is a slower turning gear, a reduction in speed.

If the ratio is smaller than 1, then the output is a faster turning gear, an amplification of speed.

Start with a smaller wheel, the bigger wheel turns slower. Start with a bigger wheel, the smaller wheel turns faster.

We also write the ratio like this R = Dn:Dg

OK. Next, how do we figure out the gear ratios for the gear train, and how many do we need?

Let’s take two gears, one is 36mm in diameter and the other is 12mm.

If the 12mm gear is the driving gear (it is connected to the servo), then the ratio is \( R = {36 \over 12} = {3 \over 1} \) or 3:1. The ratio is greater than 1, so the output is a slower turning gear.

One way to look at it is to read the ratio from left to right. A bigger number is faster than a smaller number. R = 3:1. 3 to 1. This is a decrease. From speed 3 to speed 1. Slower.

But if the driving gear is 36mm, then the ratio is \( R = {12 \over 36} = {1 \over 3} \) or 1:3, the output is a faster turning gear.

Read from left to right. 1 to 3, is an increase. From speed 1 to speed 3. Faster.

If we stick with a 12mm pinion, how many times does it need to revolve in order move a rack 150mm?

The circumference of a 12mm pinion is

\( C = Dπ \)

\( C = 12π = 37.699mm \)

so

\( {150mm \over 37.699mm} = 3.9789 \) revolutions

A 12mm pinion needs to rotate about 4 times in order to move a rack 150mm.

So if we have a second gear turning the 12mm pinion, how big does it need to be. Recall that the servo gear will only be able to rotate half of a rotation. The gear ratio, then, needs to be 0.5:4. Half a rotation to 4.

\( {12 \over x} = {0.5 \over 4} \)

Doing some cross multiply,

\( 12(4) = 0.5x \)

\( {48 \over 0.5} = x \)

and we get that x = 96. Whelp. Back to a 96mm gear. This is because the servo gear only rotates halfway.

Third Gear

So, I ask myself, “Self, if you know the pinion size and how many rotations it needs to complete, how do you calculate the other gears in the train if you don’t know exactly what sizes and how many are needed?”

I replied, “You know, that’s something that I don’t know.”

Well, I asked Copilot, too. (Copilot took into account previous conversations where I told it the gear ratio was 0.5:4 and an earlier example using 36mm and 12mm gears. And it uses gear Teeth instead of Diameter, but these are the same thing.):

Copilot said:

Great question —- this is the heart of gear‑train design. When you know:

  • the pinion diameter (or teeth)
  • the pinion rotations required

…but you don’t yet know:

  • how many gears
  • what sizes
  • or which ratios

…you can still design the entire gear train systematically using a step‑by‑step math process. Below is the cleanest and most universal method mechanical engineers use.

✅ Step 1 — Convert rack travel to pinion rotations (if needed)

If you already know the pinion must turn N rotations, skip this. If you only know the travel distance:

\( Pinion Rotations = {Rack Travel \over πD} \)

✅ Step 2 — Determine the required gear‑train ratio

This is the most important step. You need to know:

  • How many rotations the motor (input) produces

vs.

  • How many rotations the pinion (output) must make

\( R_{total} = { \text{Pinion RPM or Rotations} \over \text{Motor RPM or Rotations}} \)

Example:

  • Servo rotates 0.5 turns
  • Pinion must rotate 4.5 turns

\( R_{total} = {4.5 \over 0.5} = 9 \)

So the gear train must create a 9× speed increase (or 1:9 reduction, depending on convention).

✅ Step 3 — Factor the total ratio into small ratios

Gear trains are built by splitting a large ratio into smaller multiply‑able pieces. For example, if your target is:

\( R_{total} = 9 \)

Then possible factorizations are:

  • 3 × 3
  • 1.5 × 6
  • 1.5 × 1.5 × 4
  • 2 × 4.5
  • 1.2 × 1.25 × 3 × 2
  • (36→12) × (36→12) ← your earlier example

You can pick any combination of small ratios that multiplies to your total.

✅ Step 4 — Assign tooth counts to each ratio

Each stage ratio is:

\( R = {T_{driven} \over T_{driver}} \)

For example, suppose you choose two stages:

\( R_{1} = 3 \), \( R_{2} = 3 \)

You now choose tooth counts that satisfy each:

Stage 1: ratio = 3

Examples:

  • 12 driving 36
  • 10 driving 30
  • 16 driving 48

Stage 2: ratio = 3

Same options.

A compound gear (two gears on one shaft) lets you chain them:

(motor) 36
        | (ratio of 3)
        ↓
       [12 same shaft as 36]
                          | (ratio of 3)
                          ↓
                (pinion) 12

Ratios multiply:

\( 3×3=9 \)

✅ Step 5 — Check physical constraints

When selecting gear sizes, check:

  • Gear diameters fit in available space
  • Teeth counts match a common module or DP
  • Shaft spacing is feasible
  • 3D printing tolerances allow proper meshing
  • Required torque is acceptable
  • Compound gears are not too small or too fragile

If something doesn’t fit, adjust tooth counts but keep ratio the same.

✅ Step 6 — Iterate until a valid mechanical layout exists

This is normal: you will often try 3–6 combinations until the gear spacing, shafts, and reductions all work.

🧮 A Worked Example (General Method)

Suppose:

  • You want 5 pinion rotations
  • Input shaft makes 1 rotation
  • Total ratio required:

\( R_{total} = 5 \)

Factor it:

  • 5 = 5
  • 5 = 2.5 × 2
  • 5 = 1.25 × 4
  • 5 = 1.666 × 3

Pick: 2.5 × 2

Assign tooth counts:

  • Stage 1: 12 → 30 (ratio = \(30 \over 12 \) = 30:12 = 2.5)
  • Stage 2: 15 → 30 (ratio = \(30 \over 15 \) = 30:15 = 2.0)

Total:

\( 2.5 × 2 = 5 \)

Build it as a compound:

(input shaft) 30T
              ↓
              12T -- same shaft -- 15T
                                    ↓
                          (pinion) 30T

Pinion rotates 5× per 1 input rotation.

🎯 The Key Insight

You don’t need to know the gear sizes up front. You only need to know the total ratio, and then you can:

  1. Factor the ratio into small ratios
  2. Assign teeth counts that match each small ratio
  3. Assemble them into a compound gear train
  4. Adjust until it fits mechanically

This process is how all engineered gearboxes are designed.

Fourth Gear

OK. That’s cool. Now to ask Copilot to figure it all out for me.

“Copilot, walk me through each step of how to calculate a gear train to drive a pinion 4 rotation with a servo motor generating 0.5 rotations and the largest a gear can be is 40mm, and using the smallest number of gears possible, and the gears should be easily 3D printed.”

Copilot said:

Reasoning completed in 3 steps

Absolutely-—let’s design a compact gear train that makes a pinion turn 4 rotations when your servo only turns 0.5 rotations, with the constraint that no gear may exceed 40 mm diameter, using the fewest gears possible and keeping everything easy to 3D print.

🎯 What we need (in plain math)

  • Input (servo): 0.5 rotations
  • Output (pinion): 4 rotations
  • Required speed increase:

\( S_{total} = {\text{pinion rotations} \over \text{servo rotations} = {4 \over 0.5} = 8 \)

So the gear train must provide an 8× speed increase (equivalently, a 1:8 reduction in the “driven/driver” convention).

  • Constraint: largest gear ≤ 40 mm diameter.
  • Goal: Fewest gears (i.e., 2 stages / 4 gears total with one compound shaft).

✅ We’ll target a two‑stage compound gear train (4 gears total). If we can’t meet printability constraints, I’ll give a 3‑stage fallback.

🔧 Design conventions (for easy 3D printing)

  • Use equal gear module (e.g., module m = 1 mm/tooth) so:

\( \text{Pitch diameter (mm)} ≈ m × \text{tooth count} \)

With m=1, a 40‑tooth gear ≈ 40 mm diameter—- perfect for your 40 mm limit.

  • Common printable tooth counts (no special profile shift): 12, 15, 16, 18, 20, 24, 30, 36, 40.
  • Pressure angle: 20° (typical for printable involute gears).
  • Try to avoid very small tooth counts (<12) to reduce undercut and fragility.

🧮 Step‑by‑step method

Step 1 — Decompose the total ratio into stage ratios

We need:

\( S_{total} = S_{1} × S_{2} = 8 \)

We’ll look for two reasonable stage increases (each <4×) that multiply to 8.

A convenient split is 3.333… × 2.4 ≈ 8.

Step 2 — Map stage ratios to tooth (or diameter) ratios

Speed increase for a stage (driver → driven) is:

\( S = {D_{driver} \over D_{driven}} = {T_{driver} \over T_{driven}} \)

(Assuming same module.)

So we want (example picks):

  • Stage 1 \( S_{1} ≈ 3.333 \): 40T → 12T (\( 40 \over 12 \) = 3.333…)
  • Stage 2 \( S_{2} = 2.4 \): 36T → 15T (\( 36 \over 15 \) = 2.4)

Total:

\( S_{total} = {40 \over 12} × {36 \over 15} = {10 \over 3} × {12 \over 5} = {120 \over 15} = 8 \)

Bingo.

Step 3 — Lay out the gear train (compound shaft)

[(A)40T Servo]  
    |
  meshes                        Stage 1 (40→12)                      
    ↓ 
[(B)12T same shaft as (C)36T]  
                        |
                      meshes    Stage 2 (36→15)
                        ↓
                 [(D)15T Pinion]
  • (A) is connected to the servo motor.
  • (B) and (C) are rigidly fixed on the same shaft (compound).
  • The pinion is gear (D) = 15T in this design.

Step 4 — Verify motion requirement

Servo turns 0.5 rev → pinion turns:

\( 0.5 × 8 = 4\text{rev} \)

Meets the spec. ✅

Step 5 — Verify size constraints (≤40 mm)

With m = 1 mm/tooth:

  • 40T → ~40 mm
  • 36T → ~36 mm
  • 15T → ~15 mm
  • 12T → ~12 mm

All ≤ 40 mm. ✅

Step 6 — Check printability & robustness

  • Smallest gear is 12T—printable in PLA/PETG with 20° PA; 15T pinion is sturdier and meshes well.
  • Keep face width ~6–10 mm for strength (depends on load).
  • Add 0.1–0.2 mm backlash target (or scale tooth thickness down ~1–2%) to compensate for printer tolerances.
  • Use fillets at hub/arm junctions; ensure set‑screw hub or D‑shaft interface.

✅ Minimal‑gear solution (recommended)

Two stages / four gears (one compound shaft):

  • Stage 1: 40T → 12T (3.333× speed increase)
  • Stage 2: 36T → 15T (2.4× speed increase)
  • Total: 3.333 × 2.4 =
  • Result: Servo 0.5 rev → Pinion 4 rev

This uses just 4 gears and fits the 40 mm cap.

Nice! If we have a 15mm pinion rotating 4 times, that moves the rack

\( T = π × D × 4 \)

\( T = π × 15 × 4 = 188.5mm \)

I plugged these calculations into a spreadsheet (rack_travel_calculator.xlsx) to help me play around with the gear sizes. I wanted something smaller than 40mm.

It looks like 36mm (servo) —> 12mm|36mm —> 12mm (pinion) has smaller gears and gives good enough range.

That’s a 3 × 3 = 9 total ratio. Better than the 8 needed.

12mm pinion rotating 4 times moves a rack

\( T = π × D × 4 \)

\( T = π × 12 × 4 = 150.796mm \)

That’s just perfect, but in a gear train, the pinion actually rotates 4.5 times, so the rack will move 169.646mm. Even more perfect!

gif of gear train at this ratio

Gear train

OK. Now with the math and numbers all figured out, and the some additional tips from Copilot about layout, it’s time to start modeling a gear train!

🧰 Practical layout tips

  • Center distance between meshing gears:

\( c = {m \over 2}(T_{1} + T_{2} ) \)

With m=1, 40T–12T center distance = (1/2)(52) = 26 mm;

36T–15T center distance = (1/2)(51) = 25.5 mm.

  • Maintain parallel shafts and allow axial shimming (washers) to tune backlash.
  • If you’re driving a rack, ensure the final gear module matches the rack’s module (e.g., both m=1).
  • For SG90 servos, print large driver gears with a robust hub and insert brass heat‑set inserts for screws if possible.

Phew! That was a lot! Next week, 3D model the gear train!

Funding provided through a generous grant from UVA Arts Council. Alt text

Read Part 1 - The Beginning

Critical Making Fellowship 2025-2026: Part 1

2026年2月20日 20:54

Introduction

Beginning in 2023, the Makerspace has funded a graduate student, usually in the humanities, to design and complete a physical project that represents or comes from their humanities research. Named the Critical Making Fellowship, the previous projects were Alexa Luborsky’s “Diaspora Poem” (2023), and Holly Zhou’s “Memory Maps” (2024 & 2025). This years Fellowship began as a collaboration with Statistics Professor Rich Ross and Makerspace Manager Ammon Shepherd. Generously funded by an UVA Arts Council Grant, the 2026 project was able to hire Yashu Tang for the Fall 2025 semester to get the process started. Below is the write up of the project and contributions from Yashu.

Project Overview

This project aims to visualize electoral voting patterns in previous presidential elections using an interactive data-sculpture. Each state is represented with a cluster of hexagonal cells equal to the number of electoral votes allocated to the state.

"2012 US Electoral map"

The state-block will have two actions in response to input data:

  1. light up blue or red depending on the party of the winning candidate and
  2. raise or lower itself proportional to the margin of victory.

The data on state-level electoral votes is from UCSB’s American Presidential Project website.

Data

The data has already been scraped from UCSB’s website and contains data on the 1924-2024 elections. They are stored in the election data folder on the shared drive, with a separate .csv file for each election year. Files are named with the convention Election_####, e.g. Election_1968. Years with atypical electoral votes have been noted in the data description document, which can also be found in the election data folder.

The data columns are as follows:

State: State where the data was collected

Total: total votes tallied for the state

Popular_D: Number of popular votes won by the Democratic candidate

Prop_D: Proportion of total votes received by the Democratic candidate

EV_D: Number of electoral votes won by the Democratic candidate

Popular_R: Number of popular votes won by the Republican candidate

Prop_R: Proportion of total votes received by the Republican candidate

EV_R: Number of electoral votes won by the Republican candidate

  • If a 3rd party candidate won electoral votes, the votes will be recorded with similar conventions as above, with “_3rd” as the suffix.

EV_Outcome: Column with electoral vote outcomes. Data is stored with integer values of electoral votes, followed by the party they were cast for, separated by spaces. E.g. 3 D 0 R 0 I, where 3 votes were cast for the Democratic candidate, and 0 for the Republican and Independent/3rd party candidate.

Margin: Margin of victory, calculated using

MOV = (Raw margin of victory) / (Total votes in state)

where the raw margin of victory is the difference in popular votes between the first and second place candidates in the state.

Hardware

The state-blocks will be 3D printed by Ammon at the Makerspace and mounted on a similar 3D printed rack-and-pinion mechanism to achieve the raising and lowering.

The vertical movement will be powered by 180-degree rotation Servo motors. They were chosen because their degree of rotation can be specified in code. This allows for an easy transition from the MOV value in the data into Servo motor directions. The Servo motors will be connected to the Adafruit 16-channel PWM bonnet, and a brief tutorial on connecting and using the bonnet can be found here. For this project, the bonnets will use the 3x4 right angle male headers, so the Servo motors can all interface to the pi.

The light-up portion of the project will be completed with the 5050Neopixels, whose product specifications can be found here. A pdf of the specs will also be in the shared drive. The pin configuration can be found on page 5 of the pdf. When connecting the Neopixel to the bonnets, the signal pin should connect to pin 2 (DIN), the power pin should connect to pin 3 (VDD), and the ground should connect to pin 1 (GND).

  • It should be possible to chain multiple Neopixels by chaining pin 4 (DOUT) to pin 2 (DIN) on another Neopixel, but I haven’t had a chance to test it.

Software

There is some Python code for powering the Servos simultaneously. This is on the Raspberry Pi and should be stored in the “Code” folder. The packages used for powering the Servos and Neopixels must be used in a virtual environment. On Thonny, you can go to “Run”, then “Select interpreter”, then choose the venv that is in the “Code” folder. Not much has been done for the software portion of this project.

February 2026 update

Further consideration about the project led us to expand the vision of the project. Instead of being tied to electoral data, the map will be able to use any two data points to compare states. The LEDs will not be exclusively red or blue, but RGB LEDs will be used to allow a range of colors.

As of February 2026, the hardware side of things has improved a bit. California was chosen for the test case as it is the largest with the most electoral votes. This would test the capability of the inexpensive 180 servo motors to move the 3D printed states.

Originally, it was hoped to use the output of data from the R statistical program to generate the 3D models for printing. The resulting hexagons from this workflow were inconsistent.

Map showing inconsistent hexagon and height

An additional issue, was that the generated file created a map with states at varying heights. We are going to account for this in the hardware by moving the states up and down, so they all need to be the same height.

Modeling each state by hand in Fusion 360 is the solution.

Model of California

Fusion 360 was also used to model the servo holder and a rack and pinion gear set to move the state vertically.

Model of the rack and pinion gear

To test the set up, two pieces of plywood were cut to house the gears and the state. Temporary supports were 3D printed to hold the two pieces of plywood together.

A test case using California can be seen in the video below.

Funding provided through a generous grant from UVA Arts Council. Alt text

Read Part 2 - Jump on the Gear Train

Light Up Your Heart

2026年2月13日 21:30

A great Valentine project to brighten the day for your special someone.

Materials Needed

Step 1 Cut Out Cardboard Shape

Cut a heart shape out of cardboard. You can do any shape you want, though.

Cardboard heart

Step 2 Apply Copper tape

Make a “track” of copper tape around one side of the heart. The rails of the track should not touch. One is for the negative, the other for the positive part of the circuit. Leave a piece unstuck. This will be used for the “button”.

Cardboard heart

Step 3 Poke holes for LEDs

Poke holes in the heart for the LEDs. You can do as many or as few as you want. This one is labeled with - and + to make sure the LEDs are placed correctly.

Cardboard heart

Step 4 Insert LEDs

Push the LED legs through the holes. The short leg is negative ( - ) and the long leg is positive ( + ).

Cardboard heart Cardboard heart

Step 5 Secure LEDs to Copper Tape

Bend the legs of the LEDs so that the negative leg lays flat on the negative rail and the positive leg lays flat on the positive rail. Tape them down so the stay in contact with the rails.

Cardboard heart

Step 6 Make Battery Holder and “Button”

Use cardboard or cardstock to make a ring the size of the battery. The ring should be at least three times as tall as the battery.

Cardboard heart

Fold a piece of cardboard or cardstock to fit like a bridge over the battery ring. The positive ( + ) side of the copper tape will attach to the underside of the bridge to act as a button.

Cardboard heart

Step 7 Secure Battery and Button to Heart

Use Masking tape to secure the battery ring and bridge (button) to the back of the heart. The button should rest on the negative ( - ) rail of copper tape. The positive ( + ) rail of tape should be attached to the bottom of the bridge.

Cardboard heart

Test the LEDs by pressing the button. They should all light up. If not, check to make sure all of the LED legs are touching the correct rail and are firmly taped down.

Step 8 Wind with Yarn

Finally, wide yarn around the heart until all of the cardboard is hidden. Secure the yarn on the back by tying a knot.

Cardboard heart

Press the button on the back to make the LEDs light up!

Cardboard heart

3D Printed Cityscape

2026年1月8日 13:00

A screenshot of a map

This is a guest post by Makerspace user, Yifan Liu. During the 2025 Fall semester he developed and created a number of amazing cityscapes.

3D Print Tutorial: Cityscapes

By: Yifan Liu (yl3gm), UVA Graduate Medical Student

Creating a 3d Model

  1. Open the online software Map2Model. You will be presented with the following interface. A screenshot of a map
  2. Enter which city or area you would like to model search bar. Then select an area of the map to be modeled.
    A screenshot of a map
  3. Adjusting settings: There are many customizable settings that can be adjusted in the right-hand menus. Below are a few example settings that I commonly choose.
    • Base:
      • Map size: 152mm
      • Base layer: 4mm
      • Topography: Disable if modeling a relatively flat area to reduce complexity
      • Frame: Off
    • Features:
      • Roads
    • Include footpaths: Enable if you want to include detail of hiking trails or parks for example. Disable if you want to reduce file size and processing time
    • Road Types: Play around with disabling different road types for effect or reducing complexity - Grass: Off - Buildings:
    • Buildings Scale: 1.2x – 1.5x - Sand: Off - Piers: Off
  4. Press “Generate Mesh” to generate a 3d model of your selection A screenshot of a map
  5. Click the dropdown menu next to “Export 3MF”. Click “Export STL”
    • Note: you can also export as 3MF to retain features like roads, water, and buildings as separate objects.

Editing and Refining (optional)

You may notice that some structures in the model are not correctly detailed or rendered. If you want to add more detail, import your model into a 3d modelling software. For this example, I used Blender. More detailed instructions on how to use Blender can be found online.

  1. Download or create 3d models of desired buildings. Adjust to correct scale and position and place over existing building on model.
    A screenshot of a map
  2. Delete undesired geometry or vertices on cityscape.
  3. Export file as an STL for slicing and printing.

Slicing

  1. Open STL file in PrusaSlicer
  2. Adjust settings by going to “Print Settings”:
    • Print settings: 0.20mm Structural
    • Brim: 4mm
    • Infill: 10%
  3. Multimaterial Printing: (optional)
    • Click on the STL object and click on Multimaterial printing on the left-hand menu icons
    • Use the Smart fill tool to paint the desired colors. I prefer to paint water features blue and all other features white.

A screenshot of a map

Printing

  1. After slicing export your file to the desired printer. If using Multimaterial printing, use either Kermit (Prusa MK4 MMU3) or Big Bird (Prusa XL).
  2. Load and select desired filaments on printer. Make sure to check that the correct filament is paired with the correct extruder.
  3. Print and wait!

A screenshot of a map

Laser Cut & 3D Printed Keychain

2025年3月18日 18:57

This tutorial will guide you through the steps to make a keychain or charm that is both laser cut and 3D printed.

Design the keychain

This works best with designs that are mirror images across at least one axis. Names are possible, but much harder.

Sketch the outline of the keychain and the ring hole.

30mm x 70mm is a little bigger than a standard house key. If making a rectangle, round the edges at 6mm.

Add a circle for a hole 4-5mm in diameter, and 5mm from the center of the circle to the edge.

Import an SVG file for the design or sketch the design.

Line up and resize the SVG image to your liking.

Once you have the design set, add a rectangle around the design that will be cut out. This will serve as the bottom of the 3D printed part, and the section that will be engraved by the laser cutter.

Just to make things clean, create a new sketch and project the current lines onto this sketch. These will be the engrave and cut lines used in Illustrator.

Save this laser cutting sketch of the keychain as a DXF file.

Making the 3D printed part

Next, create a new sketch for the 3D printed part.

Project the lines of the design that will be 3D printed onto this sketch. Then select the lines and offset them inside by .5mm.

Extrude the inset design 3mm.

Then extrude from the shape surrounding the design as a new body by .5mm. Remember to extrude it as a new/separate body.

It’s important to have each part of the design a separate body from the bottom plate, so that it is easier to 3D print them in different colors.

Export all of the bodies to be 3D printed. Go to File->3D print. Select the main Bodies folder, which will include all of the bodies in the export. Then click OK.

3D Printing

Slice the object for 3D printing

Select the colors you want for the print. There can be up to 5 different colors. Then select each part to have the correct color.

3D print the insert object on Big Bird, https://cal.lib.virginia.edu/seat/176961 or Kermit, https://cal.lib.virginia.edu/seat/176954.

Laser Cut

Prepare for Laser cutting in Illustrator

Open the DXF file in Adobe Illustrator in a new file that is sized to the laser cutter, 32”x18”.

File→Place then select the DXF file.

If you open the file directly in Illustrator, make sure to scale the artwork appropriately. If you used metric measurements in Fusion 360, then change the Scale units to 1 millimeters.

Highlight all of the lines, and then unselect the shape surrounding the design.

Change the color of the stroke to red, #FF0000, and 0.001 inch stroke width. All of these very thin red lines will be cut.

Then select the shape around the design. Turn the stroke off and change the fill to black, #000000.

Print the file and make sure the VLS6.60/75 is selected. It should be by default.

Hit the print button again.

Laser Cutter Software

Open the laser cutter software by clicking on the icon in the app tray:

You should see the image from Illustrator in the Viewer screen. The red lines will be cut out. The black shapes will be engraved. The engraving will burn out just enough material for the 3D printed part to fit right in.

Set the Material

The very first thing to do is set the material used and the width of the material. Click the Settings button.

In the Materials Database dialogue box, select the correct material (use Birch if you are using the thin birch plywood). Measure the thickness of the material and enter that into the Material Thickness section. Make sure to enter the numbers, then hit Tab on the keyboard, then click the Apply button. If you do not do it in this order, the thickness will not be saved.

After making changes, always make sure the Apply button is grayed out. Then click OK.

Now you can turn on the laser cutter, which will turn on the exhaust system. You must wait until the exhaust system is fully running before starting the print/cut job. Click the power button to turn on the laser cutter.

When the exhaust is fully on, and the laser cutter is ready to cut, the play button will turn green.

You can check that your material is placed correctly by lifting the lid on the laser cutter, pressing the focus view icon and clicking next to your keychain shape in the Viewer.

The carriage will move to that point and if the lid is open, it will shine a laser pointer light on your part. Check multiple places to make sure the material is sufficient for the part to be cut out.

Once everything is in place, click the big green play button.

Remember to stay by the laser cutter the entire time that your piece is being cut.

Result

And voila, you have some laser cut and 3D printed keychains. You can also make them with words. Just make sure to decide if the legible side is the 3D printed side or the other side.

ISAM 2024 Conference Report

2024年12月17日 18:07

Each year educators, students, and staff of university makerspaces gather to share research, ideas and projects at the International Symposium on Academic Makerspaces conference. This was the first year since it’s founding in 2016 that the conference was held internationally, at Sheffield University in England. It was, perhaps, the international appeal that convinced several SLab Makerspace Technologists to submit a paper or project to the conference. Unsurprisingly (because these students are amazing) all of the papers and project were accepted for the conference.

It was a great conference, a fun trip, and we all did great on our presentations. The most unfortunate thing was that Link Fu came down with COVID two days before the trip and was too sick to travel with us. Resourceful as always, she recorded her part of the presentation and we were able to play that during our session.

by J.Phan and J. Truong

Recommending Makerspace Best Practices Based On Visualization of Student Use Data

by Holly Zhou and Ammon E. Shepherd

Typewriter Poetics: Creating Collaborative Memory Maps

by Qiming (Link) Fu and Ammon E. Shepherd

Mutualism between Interdisciplinary Student Organizations and Makerspaces: The Nutella Effect

2024 IDEA grant for Qianqian Shao and The Makerspace

2024年11月14日 13:00

In February of 2024, Qianqian Shao, Makerspace volunteer, and Ammon Shepherd, Makerspace Manager, were awarded a Library IDEA grant to provide opportunities for underrepresented students.

In 2022, the Library’s IDEA Committee received library staff requests to help support programming related to IDEA. The success of these projects encouraged the committee to create a process to support and promote staff-generated programming pertaining to inclusion, diversity, equity, and accessibility across the library.

Our proposal was to welcome 4 female Black and Latino/Hispanic students, along with 2 teachers, from Annandale High School to the UVA campus and the library for the Spring of 2024. The students will have a tour of Grounds with a focus on UVA libraries. The students will visit the Lawn and Rotunda to learn about the history of UVA. They will visit Brown, Clemons, and Main Libraries to learn about the resources available to UVA students. The Scholars’ Lab Makerspace will host a workshop for the students while they are at UVA.

The following is taken from a presentation that Qianqian gave to the Library at a monthly “Town Hall” meeting to report on the success of the initiative.


Good afternoon, everyone.

My name is Qianqian, I’m a PhD candidate (graduated on November 5, 2024) from the Chemistry department. Today, I’m excited to share with you the highlights from an impactful event that took place as part of my IDEA project.

First of all, I would like to thank you for funding my proposal, which made this event possible. Your support allowed me to create a truly impactful experience for underrepresented Black, Hispanic and Latino female high school students, showing them the opportunities available in higher education.

On Wednesday, April 24, 2024, we had the pleasure of welcoming five students and two teachers from Annandale High School for a one-day visit to the University of Virginia. The goal was to inspire these young women by introducing them to both the academic and social aspects of college life, showing them what’s possible for their futures, and what kind of resources our library can provide.

The day began at the Chemistry Department, where they were guided by Dr. Marcos Pires, the Director of Graduate Studies of Chemistry. He provided an overview of the chemistry program and offered insights into the broader STEM opportunities available at UVA.

Visit to Chemistry Department

Following that, with the help of Kalea Obermeyer and Michelle Bair, program coordinators of the Hoos First: First-Generation & Limited-Income Initiatives, along with Kimberly Wong, the students had the opportunity to connect with UVA students from their home countries. This connection helped them see how they could build a community of support as they begin their own college journeys.

Visit with Hoos First - talkingVisit with Hoos First - visitingVisit with Hoos First - enjoying

Then, we had the privilege of hosting Dr. Adrienne Ghaly from the English Department, who gave an inspiring presentation on global citizenship and global policy. She also shared her project, “Read for Action: Climate, Conflict, and Humanitarian Crisis,” which is in partnership with the United Nations Office for the Coordination of Humanitarian Affairs. Dr. Ghaly’s session sparked meaningful discussions, helping the students understand how reading books in a library can connect to a deeper understanding of broader global issues.

Visit with Dr. Ghaly - teachingVisit with Dr. Ghaly - learningVisit with Dr. Ghaly - talking

After the presentation, the students enjoyed a campus tour and lunch in the Shannon Library, where they met two guest speakers, Samuel Wachamo and Giovanna Camacho, who are pursuing MD and PhD programs at UVA. These interactions provided the students with first-hand insights into the experiences of Hispanic, Black and Latino individuals in higher education and how they can navigate similar paths.

At the Rotunda

The students also got a chance to audit Dr. David Kittlesen’s immunology lecture after lunch.

To wrap up the day, the students visited the Scholars’ Lab Makerspace, where the students explored a variety of hands-on activities, learning about the innovative equipment available to UVA students. They even made personalized buttons as part of their experience. It was a fun and interactive way to introduce them to the creative and collaborative opportunities they could expect in college.

Makerspace Visit - making buttonsMakerspace Visit - students

Overall, the visit was a tremendous success. The students and teachers left UVA having made valuable connections with both professors and current students, and they expressed a newfound sense of excitement about their future educational possibilities.

Special thanks to Makerspace manager Ammon Shepherd, who supervised my project, and to Makerspace technician Kroesna Chour for assisting during the event. I managed all aspects of the event myself, except during lunch when I had to arrange catering at Shannon Library. At that time, Summer (Wenxin) Xu kindly picked up the food while I guided the students to meet Dr. Ghaly in the English Department. Later, Kroesna helped lead the group to the library, allowing me to finalize the setup for catering. I couldn’t have accomplished this event without their support.

A model of medical support

2024年9月24日 12:00

Over the years, the Makerspace staff have helped with numerous projects connected to the UVA Medical School and Hospital. Here are six projects I have worked on over the past year or so.

Woodchuck Liver Tumor Slicer

In the summer of 2022, two medical students reached out to the Makerspace seeking support for making a 3D model from CT and MRI scans. The students were working in a radiology lab over the summer and need a process for creating a mold from the scans. What were the scans? Livers. Livers from woodchucks. What did they want to do with the mold? Put the liver in it. And then slice it up so they could do tests on the tumors in the liver. And that was how the woodchuck liver tumor slicer was created.

Imagine my surprise, when in the summer of 2023, another student asked for the same thing!

Liver tumor slicers

Files for Replication

3D Printing Protein

In Fall 2023, Ilya Levental asked about 3D printing a beautifully structured protein called caveolin.

pretty proteins

With a little effort and a lot of support material removal, we were able to get a nice model of the protein printed.

3d printed protein

Files for Replication

Mouse Pup Anesthesia Bed

Lou Legouez, a post doctoral researcher at UVA’s Neuroscience department, requested help with creating a bed and mask cone adapted for mouse pups that undergo anesthesia. It sounded like an interesting project, so I was able to model a part and 3D print a prototype.

mouse pup bedmouse pup bed

Files for Replication

Neonatal Rib Cage

One of the earliest efforts to assist UVA’s medical field was in from 2021; an inquiry from the Medical Simulation Center to 3D print a baby sized rib cage for students to practice placing chest tubes in infants. Apparently, the center would use chicken rib cages for this purpose. With models available online for this, I was able to 3D print some rib cages for the center.

rib cage 1rib cage 2rib cage 3rib cage 4

Files for Replication

Motion Capture Clusters

Dante Goss, a PhD student in Kinesiology, was looking for some replacement motion capture clusters. The department had received these clusters some years ago, but who created them and how was lost to history. One of the clusters had recently broke and was unusable. I was able to take the measurements from the old ones and model some new ones in Fusion 360. A usable model came after a couple of iterations.

motion capture left footmotion capture clusters

I decided to put the files on a popular 3D printing website so anyone can use them. The Fusion files and .3mf files are available for download at the following site:

Files for Replication

Petri Dish Comb

While most of my help ends up successfully, some do not. Point in case is the attempt to print a petri dish comb for Louis Wilson from UVA’s Molecular Physiology & Biological Physics Department. They had a filament 3D printer available, but printing in PLA was not an option as the part deformed and warped when applied to the hot temperatures in the medical equipment. This meant using a more sturdy material, which we could do with our resin printer. Louis was able to procure the materials and we provided the printer.

I tried several times and with several different resins to print a usable comb, but most of the attempts had too much support and left spurs on the comb tines rendering it unusable, or the finished product was so brittle and fragile that the tines broke off, or the resin was so old that it produced more of a mess than a prototype.

broken combs from a broken home...

Files for Replication

While I have no formal training in biomedical engineering, or engineering in general, I love the opportunity to help people solve problems. And that’s what life is pretty much all about anyways. We all have problems and issues. Finding people to help us find solutions can bring happiness!

A model building

2024年8月23日 12:00

If a picture is worth a thousand words, then a three-dimensional object is worth a million words. 3D printing an object often provides unique and quick ways to present information. The main library at UVA completed major renovations from 2020 until 2023 which include removing a large center building that… here, let me show you with this 3D model instead.

This is what the library looked like before the renovation.

The main library before renovation

The outlined section was the original building, built in the 1930s.

The og library

The below outlined section was the “New Stacks” built in 1967. The original, or old stacks, was 5 stories. The new stacks was 10 stories. This led to very interesting stair cases (the submarine staircases) and gave the whole stacks a labyrinthine feel. One could easily get lost in the stacks. Originally, the old and new stacks were closed to the public. A library patron would request a book, then a staff member would retrieve the book from the shelf and send it to Memorial Hall using a conveyor belt system.

The new stacks

In the picture below, the outlined portion, the old and new stacks, was demolished.

Demolished!

Interestingly, the brick wall of the old stacks was retained and reused in the renovation. It can still be seen in the courtyards.

Old brick wall

The renovation gutted the original U shaped portion of the building (Memorial hall and both wings) down to the concrete walls. The new portion of the building is continuous; it is 5 stories that match the original building, and include a cafe (so you don’t hear the blaring of the espresso machine in Memorial Hall anymore).

The main library after renovation

And with a new library, came a new name. Out with Alderman, and in with Edgar Shannon.

The new

More articles about the renovation are available on the Library website.

A model heart

2024年8月22日 12:00

Collaboration with Dr. Zimmerman began in 2022 through a request to create a life-size, life-like model of a heart that he and other fellows could use to practice the movement of catheters inside the heart. Ideally the model would be clear and hollow. Due to time constraints the project was put on hold until the summer of 2023.

The original request was unable to be created due to the limitations of FFF printers and our lack of quality resin for our Form 2 printer.

So, like all good projects, we came up with the next best thing; a 3D printed, life-size heart with extra holes to make it usable for practice surgery.

I found a version online at https://www.printables.com/model/5612-anatomic-heart-multi-material, which provided the perfect model.

Burning Heart, Survivor

My 3D printed version came out pretty close!

Total Eclipse of the Heart, Bonnie Tyler

After viewing this version, Dr. Zimmerman had a few alterations in mind that would improve the model. I was able to pull the .stl files from printables.com into Autodesk Fusion for digital manipulation.

Unbreak My Heart, the Weezer version

Heart and Soul, T'Pau

The first attempt made sure the atrium and ventricle pieces could fit together and included most of the holes. I forgot a few, and Dr. Zimmerman had a couple more altercations, so it was back to the proverbial drawing board.

Heart of Glass, Blondie

The second attempt was “good enough”™ even if orange in color. I think I gave him a couple of versions in a more medical white or red.

Don't Go Breaking My Heart, Elton John and Kiki Dee

Dr. Zimmerman was very grateful for the heart models and noted that they would be useful for learning anatomy and showing patients what would be done to their hearts during surgery.

The .3mf files can be downloaded here for your printing enjoyment:

Equipment Naming Contest

2024年5月13日 12:00

We held our first ever equipment naming contest this semester. Over 20 names were suggested for each equipment. We had 37 votes tallied. We used rank-choice voting to determine the winners using this handy RankedVote Chrome Extension. So, without further ado, here are the winning names of our equipment!

Bernina 350 Sewing Machine #1

Sewing machine 1

Lilo wins with 14 votes. Sewsan comes in second with 10 votes.

Lilo wins!

Bernina 350 Sewing Machine #2

Sewing machine 2

Stitch wins with 16 votes. Thread Lasso comes in second with 8 votes. There was a glitch in the software on this election. But Stitch was the clear winner, even without ranked-choice voting.

Stitch wins!

Juki Serger

Juki serger

Sergent Pepper wins a tie breaker with Judge Juki, each had 8 votes.

Stitch wins!

Silhouette Cameo 4

Silhouette cutter

Sir Slice-a-lot wins with 18 votes. The highest number of votes for a name of any equipment. Fozzie comes in second with 7 votes.

Sir Slice-a-lot wins!

Prusa MK3S+ 3D printer #1

3D printer number 1

Phil A. Ment wins with 15 votes. Printy McPrintFace comes in second with 6 votes.

Phil A. Ment wins!

Prusa MK3S+ 3D printer #2

3D printer number 2

Printsipal Skinner squeaks out a win with 9 votes. The Other Big One ™ fortunately loses with a close 8 votes.

Printsipal Skinner wins!

Prusa Mini

3D printer number 3

The Maker Formerly Known As Prints wins with 7 votes. We’ll just call it “Prints” or ℘. Cupid comes in second with 4 votes.

℘ wins!

Prusa MK3S+ w/ MMU3

3D printer number 4

Kermit wins with 13 votes. Chewbacca comes in second with 8 votes. Which gets me thinking, next time we name the equipment, we’ll go with a theme and name them all ourselves. StarWars, Muppets, and Avatar: The Last Airbender all made appearances.

Kermit wins!

Universal Systems Laser cutter

laser cutter

Vader wins with 9 votes. Major Lazer comes in second with 8 votes. Both cool names…

Vader wins!

Othermill Desktop CNC

Desktop CNC

Whittle Prince wins with 9 votes. Jill the Drill Mill comes in second with 8 votes.

Whittle Prince wins!

Formlabs Form 2 Resin Printer

form 2 printer

The Fresh Prints of Bel Air wins with 14 votes. We’ll probably shorten that to just Fresh Prints. Artemis comes in distant second with 5 votes.

Fresh Prints wins!

❌