Concept
I had a couple ideas for the final project, and after some thinking I decided to create one piece instead of a collection of pieces. It is an emotionally unavailable interface with distance and touch sensors. The piece is a manifestation of my frustration with modern queer dating (maybe dating in general as I've heard from some people who interacted with it). The character is emotional unavailability itself, an interface that collapses a lot of things together: ambiguous consent, unstable interpersonal boundaries, the feeling of being given just enough to keep reaching but never enough to trust the response.
The cube resists clean interpretation. Sometimes receptive, sometimes rejecting, sometimes indifferent. The viewer's own pattern-recognition becomes the medium.
Materials
Wood, silicone (Ecoflex 00-50), stainless steel mesh, nylon fishing line, clay (sculpted into the original nipple, then mold-cast)
Sensors
Capacitive touch — TTP223 (Lonely Binary): Single-channel touch IC on a small breakout board with onboard LED indicator. Digital output. The sensing electrode is extended via a wire to a copper-tape patch embedded under the silicone nipple, so it detects finger contact through the silicone wall.
Ultrasonic distance — MaxBotix LV-MaxSonar-EZ1 (MB1010): 42 kHz ultrasonic sensor. Range 0–6.45m (21.2 ft), 1-inch resolution, 20Hz update rate. Analog output. Used for proximity / approach detection at an arm's-length trigger threshold (~18 inches).
The process
I started with the laser cutting templates, and creating molds for the silicone skins and nipple. I tried to include as much variation as possible, including different configurations for the electrical components.
Initial Silicone Nipples
Nipples are hard to make. The silicone sometimes does not cast because of surface impurities, all I could do was clean as much as possible and hope for the best. I made about 12 nipples, and out of them 2 or 3 were okay to use. I achieved the texture on the nipple purely by accident — I used an acrylic coating so that the silicone would cure more reliably, but accidentally cracked the acrylic coating while transferring it. The resulting texture looked great. This is hard to replicate because it is hard to gauge the timing and the thickness of acrylic needed to have the effect while still having enough surface area for the silicone to cure reliably.
Skins and Mesh Structure
I embedded the metal mesh because I was worried about the integrity of the silicone — I knew it would need to endure dramatic motions and it needed to last. The first few skins were too thin, with full pieces of mesh end to end. The resulting skins were stable but too rigid. The color was also not great as the mesh makes the skin darker.
So I moved on to make the skins thinner, lighter, and precut the metal mesh into a star shape, so the skins were much more flexible, but still maintained structural integrity. Took 3 iterations to get the perfect thickness but it was too transparent, so I decided to use the second iteration to match with the nipple.
I also needed to pierce the metal mesh before embedding it between two layers of silicone, which makes the installation process much easier as the metal mesh is hard to push through. The box also took about 3 iterations to get right, a lot of spacing issues with wood and sillicon sheet thickness. I was finally able to get it to close perfectly after play around with both the silicone and box configurations. Below is how I routed the wires to be connected with servos, with a slot for sensor wires to go through at the back.
Electronics
This was the easiest part. All I needed to do was build it out on the breadboard and test sensors before embedding them. The setup is an Arduino Nano Every running 3× MG996R servos (one per wall) plus the touch and distance sensors. The only real concern was power — the Nano's onboard 5V regulator can't supply enough current for three servos under load (each can spike to ~2.5A when stalled), so the servos run on a separate 6V supply with all grounds tied to a common point. The Arduino, sonar, and touch sensor share the Arduino's 5V rail with no issue.
The Mounting Process
The wooden board I had was not stable enough so I had to change plans. Securing the box on the rail was the most secure way I could think of. It needed to have elevation because the threads need to come out and be pulled by the servos. I just needed to drill some holes in the back of the box so I can mount the flat side piece securely. I tried to minimize the amount of screws and metal L brackets by using wood glue, but after testing I still needed to add the brackets at the back because the user had to press the nipple hard to trigger the touch sensor.
I realized that making a cube is hard. Silicone is unreliable and very picky when it comes to curing.
The mechanical features run was finally successful after these implementations.
Coding the Behaviour
Ultimately when it came to coding I decided to make the box as 'alive' as possible. The logic I used here is:
The box has a few different "moods" depending on what's happening around it.
Idle (breathing):
When no one is around, it just breathes. But each of the three walls breathes at slightly different speeds, depths, and phases (3.7s / 4.1s / 4.4s, depths 27° / 30° / 32°), so the cube doesn't look like a synchronized machine — it looks like a body with internal disagreement. The walls drift in and out of sync over a ~30 second cycle.
Approached:
When someone walks within arm's length, the breathing stops mid-motion. There's a tiny "got caught" freeze (~200ms) before the cube eases to stillness over another 400ms. Like a person quickly composing themselves when noticed.
Attention ("are you there?"):
If the person hangs around without touching for 8–12 seconds, the three walls pulse one at a time, in sequence, paced like asking "are… you… there?" Each servo gets one syllable. Performs curiosity without committing to it. Then it goes back to being still. If the person stays without touching, this fires again every 8–12 seconds.
Touched:
When someone presses the nipple, the cube plays one of five different responses chosen at random:
Full performance (40%) — committed climax with build-up "oh, oh, oh… omg yes… YESSSSSSS" twitches escalating into 5 deepening pulls, each more forceful and held longer than the last.
Cold (15%) — same exact timing as the full performance but only 30% of the amplitude. Goes through the motions without committing.
False start (15%) — builds up all the way to "omg yes" then suddenly stops and goes silent for 1.5 seconds. The ghosting variant.
Delayed (15%) — 800ms of nothing before any response begins. Emotional latency.
Withholding (15%) — only one (random) wall responds during the build-up and climax, the other two stay completely still. Until the aftermath, when all three release together.
Aftermath beat:
After every touch sequence — regardless of which variant just played — the servos slack their threads past neutral, letting the silicone bulge slightly outward for ~1.5 seconds before drifting back. This is the post-coital release / dissociation moment. The body's involuntary tell, even when the performance was hollow.
Variable timing:
Every touch event re-rolls all the pulse durations and hold times by ±10%, and every approach re-rolls the attention timeout. Same variant played twice never feels identical. The cube literally cannot repeat itself exactly.
The thematic point:
Emotional unavailability isn't refusal, it's unreliability. Refusal is a clean signal. Unavailability is a noisy one. You can't tell whether you're going to get the eager version or the version that's checked out before you started, I tried to capture that unpredictability. Ultimately, it is fun to grab the sides of the box as it performs, the final installation invited a lot of tactile experimentation. Here is video documentation of the installation.
Future Directions
- Work more on the fabrication. I wanted to have veins and hairs on the skin and nipple but I didn't have enough time to experiment with that, and I was already running out of silicone from all the failed experiments.
- The box could be better. I didn't have time to remake the box, but there could be improvements so the mounting of electronics is more reliable and secure.
- Mechanics work, but I wanted to have some linear motion that responds to proximity — the cube physically retreating or advancing in addition to deforming.
- Need to implement the initial copper tape embeddings for more sensitive detection. I let go of it because it was hard to embed the copper tape without it sticking out or shifting while pouring the silicone layers. Should experiment with it if I have time. The issue is how long it takes for silicone to cure — given the design needed multiple layers, the curing time all together for each iteration was long.
- Maybe work on a collection of nipple boxes. Maybe call it the Garden of iEden
Overall this project was a lot more work than expected but I am very happy with how it turned out. I think I really enjoyed seeing people interacting with it and enjoying the experience. There are a lot of things that I can work on, but I learned a lot through the process and I found it rewarding.