ABOUT
Hello, I'm Thomas Knoepffler, a design technologist in Miami, Florida. I design physical objects and software tools that respond to the people and spaces around them, working with AI, sensors, and digital fabrication. My recent projects include a 3D-printed hydroponic planter, a desk lamp that senses posture, and a browser tool for building procedural 3D worlds.
I hold an MS in Design Technology from Cornell University and a BS in Integrated Design & Media from NYU, and before graduate school I worked in UI/UX design and product management at an early-stage startup. Outside of studio work I have mentored student designers and volunteered with local creative communities.
I'm currently looking for design technologist and prototyping roles in Miami, Florida, and I'm glad to hear from anyone about the work.
SKILLS
— Rhino 3D, Grasshopper, Blender
— Adobe Creative Cloud, Figma
— 3D Printing, Laser Cutting
— Arduino, Raspberry Pi
— HTML, CSS, JavaScript
— Python, C#
LINKS
Resume
LinkedIn
Instagram
GitHub
Email HORIZON.JS
HORIZON.JS
Cornell University, AAP
Design Physical Interaction II, Spring 2025
— DESIGN 6398
COLLABORATORS
Rajvi Patil
MY ROLE
Prototyper, Developer
DESCRIPTION
A picture frame that shows the color of the sky over any chosen place on earth, right now, and plays an AI-generated soundscape to match. A moment of telepresence.
LINKS
GitHub
WHAT IT IS
horizon.js puts the sky over a distant place on the wall of an ordinary room. Choose a location and the frame pulls that place’s current sunrise and sunset data through a geocaching API, then renders the gradient of its sky, as it is right now, across a NeoPixel matrix behind a sheet of diffused acrylic. A speaker beside it plays an ambient soundscape generated by ElevenLabs to match. The intent is a small act of telepresence: a window onto a sky someone you know is standing under.
PROCESS
The frame began as sketches, then as CNC-carved and 3D-printed enclosures. Behind it, a Python server handles the API calls and asks ElevenLabs for audio; a p5.js sketch manages web serial and voice input; and an Arduino Nano BLE reads the physical buttons and drives the matrix. User testing changed two things. People lost patience while the audio generated, so a loading indicator now shows that something is happening. And the sounds themselves, which had started out literal, became calmer and closer to nature once the prompt asked the model to translate what the sky looked like into what it might sound like, rather than to describe the place.
NEXT STEPS
Next would come a sturdier voice-recognition model and a second pass at materials and proportions. The frame should eventually mount flush to a wall with no visible cord, which means wireless charging or a battery inside. The soundscapes will keep being tuned toward the point where they suggest a place without describing it, since that is where the frame works best: as a quiet object for someone in a city who wants, briefly, to be somewhere else.