
At Earlens, one of the biggest targets in our Digital Manufacturing Lab was not a mechanical part at all, but our recurring equipment costs. We relied on two Carbon M2 3D printers just to produce one specific blow mold, which meant a nearly seventy thousand dollar annual subscription fee we had zero interest in paying long term if there was another way. The real engineering challenge, however, lay in why we were using the Carbon machines in the first place.
To start, I needed to understand why our ProJet 6000s could not simply take over this exact job. We owned our ProJets outright and already ran most molds on them, but every time we tried printing this specific blow mold on the ProJet instead of the Carbon, operators reported casting failures during production. The root cause was surface texture: the Carbon printed parts came out with an organic, slightly textured finish that helped the material flow reliably during casting. The identical CAD model printed on the ProJets resulted in a smoother surface that did not behave the same way at all, no matter what printer settings we adjusted.
My approach was to design a custom 3D printed surface texture that would give the ProJet prints the same beneficial properties that the Carbon gave us naturally. Alongside both my previous supervisor before I moved into an engineering role and my new supervisor right after the transition, we ran a brainstorm session with several directions to explore: strategic grooves and channels, golf ball dimple patterns, and a knurling-inspired texture that I proposed based on machined part handles. I also volunteered to integrate the final design into both our existing mold generation workflows at once.

Right around then, the company was also migrating our automated workflows from older Grasshopper scripts into proprietary Earlens Builder software developed by Uform. Since I was already comfortable with Grasshopper, adapting that script came relatively quickly. The real new territory was Earlens Builder, which required learning Symvol Code. Symvol is a custom JavaScript-based language built specifically for Uform’s platform, and learning it early made me one of the first people outside of Uform fully proficient with it.
I started by taking existing molds and manually adding different surface patterns to the non-anatomical casting surfaces, then getting them 3D printed and bringing them into the clean room where an operator attempted actual casts while I observed and documented results under a microscope. The early attempts taught us several things about what not to do, but we did start seeing promising material flow behavior in the knurling inspired designs. Still short of Carbon level consistency though.

After several more iterations, a simple spherical bump pattern finally moved the needle significantly. Close, but still not quite enough for production release standards. That led me to try one final variation: distributing small cone shapes with rounded tips across the non-anatomical surfaces of the mold, specifically inside the through-hole region where raw material makes contact during casting.
This is when we hit our “BINGO” moment under the microscope. The casts looked identical to what operators had been producing on the Carbon machines for years. This texture pattern was going to let us eliminate those subscription costs entirely while maintaining or improving cast quality, and I could see immediately how large a difference this would make at scale for a company that produced thousands of custom hearing devices a year.

Now came the automation work. For the Grasshopper workflow, I reverse engineered an existing script that handled mold geometry generation for the umbo portion of the Lens, the part of Earlens’ hearing solution that directly vibrates the eardrum itself rather than using conventional speakers. Once I understood how the original script constructed surfaces and handled patient specific scan data from full ear impressions, I modified it to generate the new cone tip texture across the appropriate zones while keeping all anatomical surfaces smooth and untouched by the pattern.
For Earlens Builder, I built a fresh automation routine from scratch using Symvol, which turned out to produce much cleaner code than trying to patch an older workflow would have. The result was a highly maintainable script that generated molds with the exact same geometry and texture specification as the physically validated ProJet version we had been testing in the clean room.
Before any new code went live, I navigated the internal quality system for both workflows. Alongside my supervisor co-signing off on the physical design results, I took lead on writing all the software testing and validation procedures from scratch. I drafted step by step execution guides that operators ran against fresh patient scans, personally supervised their runs to verify output consistency across batches, and completed final acceptance testing myself to officially greenlight production release.
As the subject matter expert behind this change, I also trained our operators on all the new workflow updates, how to recognize the textured output in Earlens Builder vs the old patterns, and when troubleshooting steps should flag something to engineering versus just re-running a mold generation. This made sure the transition actually stuck once I moved on to other projects.
This project saved the company roughly seventy thousand dollars a year in recurring printer subscription fees while actually improving casting success rates compared to the original Carbon prints. Taking a problem rooted in business constraints and solving it through physical design work paired with dual-software automation was exactly what made the transition into the engineering role feel so worthwhile. Learning Symvol Code early also paid off repeatedly over the following years as new company workflows migrated into Earlens Builder and I became the go to person for developing those updates.


