You found me! I am Annie Li. My research focuses on
Reinforcement Learning and Bayesian Optimization in
Large Language Models (LLMs) and machine control, and I am especially
interested in how humans collaborate with AI in areas such as prosthetics
and fabrication, where machines extend human ability.
This site documents
my progress in MAS.836How to Make (Almost) Anything taught by Neil Gershenfeld through
14 weekly projects and a final project, with notes written to be
clear enough to fully reproduce my work step by step.
I am reachable through email:
annieliy@mit.edu.
“Run toward the hardest problems. This approach has helped me to learn a tremendous amount from both success and failure.”
“We're so excited about technology. We can help turn the impossible into the possible.”
—— Lisa Su
“The people who are crazy enough to think they can change the world are the ones who do.”
—— Steve Jobs
Week 1 — Computer-Controlled Cutting
Vinyl Cutting
Quick stickers to celebrate MAS.863! I traced the course marks and icons,
tuned stroke weights for vinyl, and cut them as high-contrast decals.
I experimented with ChatGPT to generate initial vinyl sticker mockups PNGs. Then I vectorized them and adjusted paths in inkscape in Inkscape, and prepare them for the vinyl cutter. Through this process, I learned the importance of clean outlines, kerf considerations, and simplifying shapes for weeding.
Reference artwork used for the vinyl traces.Final cut & not yet weeded stickers.
Process of tracing and preparing the design in Inkscape.
Process
Software & Setup.
Import the design into the vinyl-cutter software; connect the cutter to power and your computer.
Load Vinyl.
Feed the roll; choose Roll on the machine; align so the pinch rollers sit on the grit rollers.
Adjust Blade.
Set blade depth so it cuts the vinyl but leaves the paper backing intact.
Send Design.
Send the job from software. Set pixels to 200 (≥ 72; adjust as needed),
click Calculate, then Connect to the cutter and start the cut.
Unload & Apply.
Remove the sheet, weed the excess, apply application tape, then transfer to the surface.
Learning from Mistakes
In the bottom left corner, I made a vinyl cutter beginner mistake during designing the sticker "Parametric Design". To get the final product, I have to remove the little squares inside the net like structure bit by bit...
Therefore, use simple shapes & straight lines for vinyl cutter design.
We tested power/speed and measured kerf; our press-fit offset was +0.18 mm.
Parametric Press-fit Kit
Material: 3 mm cardboard
Parameters: thickness, tab_width, angle
Multiple assemblies: cube, lantern, lantern without handle
Extra: living-hinge arc panel (not flat) (didn't get to it this time; will try next time!)
Project Demo
My laser-cut design layout design notes.
Laser-cut design layout with parameters labeled from Fusion 360.
Design Process
I parameterized all pieces around thickness, tab_width, and the
overall panel width. The side panels are mirrored; the front and back share
geometry; and all slots subtract 2 × thickness from the internal clearances.
Tabs are evenly spaced and sized to press-fit with the measured kerf offset (+0.18 mm).
I iterated through test cuts to tune slot_clearance for cardboard springiness, then finalized
the handle, base, and top.
Project Demo — design → cut → assembly (Week 1)
First Time Laser Cutting - Bringing 2D Designs into 3D Reality
I have some previous experience designing 3D shapes in CAD, but I had never
actually built them in real life. This was my first time using a laser cutter,
and I was instantly hooked—I couldn’t stop wanting to learn more.
(Shout out to Jesse for his amazing teaching style;
I didn’t zone out for a single moment!) I’m officially addicted now.
I initially set my slot width to slightly more than 2 mm (2.94 mm), based on recommendations
from my research[2]. But when I went to the makerspace and measured the actual
cardboard thickness, I become concerned that the slots might not fit
properly with the tabs.
I joined
Tushar
and
Mariam
for my first time laser cutting. We helped each other in the laser cut process
(such as Tushar’s magnificent use of the Blue laser engraving) and in CAD
(such as slot width, cardboard thickness, and kerf)!
First Time Reaction
I was fascinated by how the laser cutter decided its path—it seemed to cut
here and there instead of following one continuous line. Small fires and little
bursts of smoke appeared from time to time, yet the cutter moved with incredible
precision. It was mesmerizing to watch!
Laser Cutting
Big shout out to
Jesse
, for walking me through the laser cutter & safety training detail by detail, and watching me do the whole process while giving instructions!
Quick Steps
Wear safety glasses.
Plug in the USB drive.
Open the USB and locate your .svg or .dxf file.
Open Inkscape → New document.
File → Import… and choose the file from the USB.
Select all (⌘/Ctrl + A) and scale to fit the page.
Use ⌘/Ctrl + mouse wheel to zoom.
Set stroke color by intent:
Red — Cut through
Blue — Engrave / score
Print (⌘/Ctrl + P) → click More settings.
Material: Cardboard
Set Power and Speed (Please see Test Result Notes below). Hit Apply and OK, then Print.
Put material in laser cutter. Set XY home by bringing the icon to the edge of pattern, check inside the laser cutter to see if the laser is out of material margin.
Optional Focusing: Place focal tool on the material. Manually lower the laser head or raise the machine's bed until the nozzle gently touches the top of the focus tool by pressing Ʌ/V on laser cutter to adjust for Z-Axis Height(If there are people using the laser cutter before you, no need to adjust Z Height). Remove the focus tool from under the nozzle.
Last Check: Gas Assist and Laser Cutter is turned on.
Initiate Cutting: Start the cutting job from the control panel.
Finishing: Remove Parts, clean the area. Apply any necessary finishing touches, such as cutting, painting, or assembly.
First Test Cut
Test Results
Setting
Value
Observation
Power
Red 100%
—
Blue 100%
First layer of cardboard cut through
Blue 75%
Engraving color too light
Blue 85%
Perfect
Speed
Red 30%
First cut: did not cut through. Second cut: smokes & small fires, still incomplete; needed knife.
Red 20%
Mostly cut through, but second layer needed knife. Result resembled perforated Amazon box.
Red 15% or lower
Recommended to test
Blue 100%
—
Set Power and Speed
Set XY Home
Learning from Mistakes
My second attempt at laser cutting did not work for my final product, because my dimensions and ratios are off once I imported and adjusted them in the laser cutter computer.
I reused the card board which has some of it cut out. In my second cut, the pattern over lapped with the cut out part from trial 1, causing the laser to shoot through the honeycomb structure underneath the material. I will make sure to aviod next time, and I have to do a second cut to get the shape!
Kerf
In my test trial, my tabs & slots are a lose fit due to kerf from cutting a second time.
In my actual laser cutting session, my tabs are too big (all the bad thoughts of having to go back to fusion, my life flashed before my eyes), but luckily it is cardboard, I start pinching the tabs until they fit into my slots!
Engraving in Laser Cutting
Engraving vs. cutting in Inkscape and the lab software:
I follow the lab convention Blue = Engrave, Red = Cut, and set
power/speed based on the table above.
Steps
Separate geometry by operation. Select paths you want to engrave (fills, hatch, logos) and those you want to cut (outer profiles).
Assign stroke colors:
Blue (#0000FF) = Engrave
Red (#FF0000) = Cut
In Inkscape: Object → Fill and Stroke → Stroke paint. Set Fill = None. In Stroke style, use a thin width (e.g., 0.1 mm) for clarity.
Check real size.File → Document Properties to confirm page units (mm/in). With your artwork selected, verify W/H on the toolbar. Lock proportions and type exact dimensions if needed.
Export for the laser. Save as Plain SVG (or PDF if your lab prefers). Keep colors intact.
Map colors to processes in the laser software.
Blue (Engrave): set Speed high / Power lower for surface mark.
Red (Cut): set Speed lower / Power higher for through-cut.
Use the lab’s recommended values from the table above, then run a small test square.
Focus, frame, test. Check focus height, run a frame pass, and do a 10–20 mm test to confirm mark depth and cut-through without charring.
Engraving setup & color-layer mapping workflow.
Engraving mistake: tab dimensions mismatch with the front panel.
What Went Wrong (and Fix)
The engraved tab should match the front tab dimensions, but they differ here because I didn’t
re-check sizes in Inkscape before cutting. Fix: verify units and W/H for both parts,
use Align and Distribute to compare, and run a paper print check before sending to the laser.
Quick Pre-Flight Checklist
Units correct (mm or inches) and page size set.
All cut paths = Red, all engrave paths = Blue, fill = none.
No duplicate/stacked paths (Edit → Select Same → Stroke color, then Path → Combine as needed).
Dimensions match your sketch/CAD; do a paper print at 100% to confirm fit.
Test swatch for power/speed per the table; adjust if edges char or don’t go through.
Write & test programs that interact with local I/O (LEDs, touch, OLED).
Communicate data to the computer (serial + live plotting).
Extra: I have made plans to try PlatformIO and ESP32, but I don't know where to start yet.
Local Input & Output
1) LEDs
According to Quentin Bolsée's example, it defined pins for red, green, and blue LEDs and blinked them in sequence to verify digital GPIO control.
2) Touch Sensing on Copper Board
The copper pads on my custom board act as capacitive sensors. When a finger touches a pad, the effective capacitance increases. The RP2040 measures this by timing charge/discharge cycles; the measurement rises on touch, and plotting those values yields a real-time graph of touch intensity.
3) OLED Display (I²C)
Using the Adafruit SSD1306 library, I initialized a 128×64 display and printed text (e.g., “Labubu!”). This validates I²C communication between the microcontroller and display.
Communication with the Computer
The sketch streams touch values over Serial. In the IDE’s plotter, touches show up as spikes, satisfying the “interact + communicate” requirement.
Physics Rationale (Why Numbers Rise When I Touch)
A capacitor stores charge: Q = C · V. The copper pad and ground form a capacitor with air (and board materials) as the dielectric. Your body behaves like a large conductive object near ground; touching the pad increases the pad’s capacitance C. The microcontroller senses this via timing, so the reported value increases—what you see as rising numbers and peaks in the plot.
Reflection
This week tied together sensing (capacitive touch), processing (RP2040), and output (LEDs/OLED) with simple physics. Arduino made it straightforward to connect hardware effects to visual feedback.
Week 3 — 3D Scanning and Printing
3D Printing
Inspiration
My Week 3 3D printing project is inspired by the traditional
玲珑球 (Línglóng Ball/Nested Ball), an extraordinary hand-crafted artifact
from the Qing Dynasty. These intricate puzzle balls, carved from a
single piece of ivory, often contain multiple concentric spheres
nested inside each other, each freely rotating. They reflect the
pinnacle of Chinese artisanship: precision, patience, and the
pursuit of impossibility.
What fascinates me is how these artifacts parallel the challenge of
non-subtractive design in digital fabrication. Just like artisans
achieved the impossible by hand, 3D printing allows us to create
nested and interlocked geometries that machines cannot carve
subtractively. My design takes direct inspiration from this tradition,
reimagined through modern additive manufacturing.
I also drew inspiration from Lingdong, an alumnus of this class,
who created a modern reinterpretation of the 玲珑球/Nested Ball in his own Week 6
project.
Fusion 360 Design
Here is my own attempt to reinterpret the Nested Ball using Fusion 360.
I modeled nested shells with Voronoi patterned cutouts uisng Meshmixer, capturing the spirit
of the original hand-carved puzzle balls, while showcasing what 3D
printing makes uniquely possible.
Torus Knot
Finished Torus Knot checking for continuity.
Inspiration
This piece reinterprets the flowing, braided rhythm of traditional Chinese jade bracelets known as
绞丝 / 麻花镯. The form is a continuous tube that follows a circular path and twists
multiple times, creating a braided silhouette that reads as soft silk but is printed as a single body.
This design is inspired by the braided jade bracelets (绞丝纹 / 麻花手镯) of the Qing Dynasty,
important artifacts in the Shanghai Museum that exemplify the elegance of rhythmic linework
and the technical mastery of jade carving. These bracelets are considered standard forms of
Qing court art, with the twisted silk-like pattern representing both aesthetic refinement and
extraordinary craftsmanship.
My STL explores the rarer, high-craft variant: the bracelet is effectively
hollow and interlocking—the apparent strands weave around each other without being fused inside,
echoing museum pieces where carvers created the illusion of independent helices. Additive manufacturing lets
me realize this as a single print, while preserving the visual logic of interlaced jade cords.
Twist: 720°–1440° (2–4 full turns around the ring)
Optional braided look via Circular Pattern (8–16 copies)
Modeling Steps (Fusion 360)
Full Fusion 360 Tutorial
On the XY plane, sketch a 30 mm diameter circle with its center
positioned 100 mm from the origin (this is the base path reference).
On the perimeter of that larger circle, sketch a 10 mm diameter circle (strand profile).
Use Trim to remove the portion of the large circle that lies inside the small circle, leaving two distinct circles.
Open Modify → Move/Copy. Select the entire sketch and set the pivot to the origin.
Click Confirm (to lock the pivot at the origin).
Make a copy of the sketch and rotate it –5° about the Y-axis (pivot at the origin).
Repeat the copy/rotate operation to create six additional copies, each rotated by an extra 5°.
Stop when you have 8 sketches total evenly distributed around the origin.
For the second sketch (the one at –5° about Y), select only its small circle.
In Modify → Move/Copy, set the pivot to the center of its corresponding large circle. Align the pivot by draging rotation manipulator (the small circle by the arrows) to the center of the small circle of the sketch.
Rotate that small circle by 45° about the Z-axis.
Repeat the previous step for the remaining small circles so they are sequentially offset by
90°, 135°, 180°, … relative to the first sketch’s small circle.
Use Trim to remove all remaining large circles. You should now have a ring of
small profile circles with progressive angular offsets.
With all profiles complete, select the entire sketch group and open Modify → Move/Copy.
Set the pivot at the origin and confirm. Create copies of the group,
rotating each by 40° increments until the sequence closes the full 360°.
Use Create → Loft and sequentially select the small circles in 3D to connect them into
a smooth, continuous strand around the ring.
Tip: If a loft fails, check profile order and spacing; adjust angles or add guide profiles as needed.
With the strand body created, open Modify → Move/Copy, set pivot to origin, confirm,
and make a copy rotated by 10°.
Create three copies total (original + 3), each offset by 10°, to form
four interwoven strands. Inspect continuity, then export as .stl.
Print note: Lay the ring flat; 0.16–0.20 mm layers, 3 perimeters, 10–20% gyroid infill.
Print Plan
Material: PLA / PETG
Nozzle: 0.4 mm • Layer: 0.16–0.20 mm
Perimeters: 3 • Infill: 10–20% gyroid
Supports: Not needed if printed flat; add a 5–8 mm brim
Orientation: Lay the ring flat for strength and surface finish
3D Scan Banana
Using Creality Ferret 3D, I scanned a banana I retrieved from the Banana Lounge.
Week 4 — Electronics Design
Coming soon.
Week 5 — Electronics Production
Coming soon.
Final Project — Marauder’s Map of MIT
I don’t have a fully formed idea yet—and I don’t want to butcher it. The theme will be
Hogwarts. I’m proudly Gryffindor 🦁 (though,
most people at MIT are Ravenclaws, wonder why 🦅). I’ll use the next weeks to prototype and decide.
Moodboard start: Gryffindor palette & heraldry.
I’m committing to a Gryffindor-flavored Marauder’s Map… of MIT.
The campus is perfect for this: numbered buildings (E62, 14, 26), secret tunnels, and legendary hacks.
The piece will be a wall map that “reveals” animations and locations when touched—think Lobby 10 glow,
tunnels lighting up, and Easter eggs for hacks and routes.